使用 jQuery 更改图像 src
我正在替换旧应用程序中的一些代码,而不是通过它的 id 获取节点,而是通过它的类获取它。因为没有一个好的方法可以通过原生 JS 中的类来获取节点,所以我使用 jQuery 来获取节点,但是新代码不会更改 img src。
有明显的原因吗?
旧代码:
var gamearea = document.getElementById('gamearea')
var images = gamearea.getElementsByTagName('img');
images[place] = "pics/" + id + ".png";
新代码:
$('.gamearea').children('img').eq(place).src = "pics/" + id + ".png";
I'm replacing some code in an old application, and instead of getting the node by it's id I get it by it's class. Because there isn't a good way to get a node by it's class in native JS I do it with jQuery, however the new code doesn't change the img src.
Is there an obvious reason?
Old code:
var gamearea = document.getElementById('gamearea')
var images = gamearea.getElementsByTagName('img');
images[place] = "pics/" + id + ".png";
New code:
$('.gamearea').children('img').eq(place).src = "pics/" + id + ".png";
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
尝试:
或:
$('.gamearea').children('img').eq(place)
返回元素的 jQuery“数组”,您无法直接访问此对象上的 DOM 属性。您需要使用[0]
(第一个元素)拉取 DOM 元素,或者使用 jQuery api 中的方法,在本例中是.attr()
。另外,如果您要替换
getElementById('gamearea'),您可能会使用
$('#gamearea')
而不是$('.gamearea')
;Try:
or:
$('.gamearea').children('img').eq(place)
returns a jQuery "array" of elements, you can’t access DOM attributes directly on this object. You need to either pull the DOM element by using[0]
(the first element) or use a method from the jQuery api, in this case.attr()
.Also, you might mean to use
$('#gamearea')
instead of$('.gamearea')
if you are replacinggetElementById('gamearea');
.eq()
返回一个 jQuery 对象。如果您想直接使用.src
属性,则需要一个 DOM 元素(不是 jQuery 对象),您可以使用.get()
而不是.eq()
像这样:我还切换到
.find()
而不是.children()
更相当于.getElementsByTagName( )
原始版本中的内容由于您没有向我们展示您的 HTML,因此这似乎是一个更安全的假设。.eq()
returns a jQuery object. If you want to use the.src
property directly, you need a DOM element (not a jQuery object) for which you would use.get()
instead of.eq()
like this:I also switched to
.find()
instead of.children()
to be more equivalent to.getElementsByTagName()
that you had in the original version and since you didn't show us your HTML, it seems a safer assumption.我知道这是一个旧答案,但肯定这是一个更好的方法......
I know this is an old answer, but surely this is a better way...