使用 jQuery 更改图像 src

发布于 2024-12-21 14:16:39 字数 423 浏览 0 评论 0原文

我正在替换旧应用程序中的一些代码,而不是通过它的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

世界如花海般美丽 2024-12-28 14:16:39
function updateGameAreaImages(id, place) {
    var gameareas = toArray(document.getElementsByClassName('gamearea'));
    gameareas.forEach(updateImages);

    function updateImages(elem) {
        var images = elem.getElementsByTagName("img");
        images[place].src = "pics/" + id + ".png";
    }
}

function toArray(obj) {
    var arr = [];
    for (var i = 0, len = obj.length; i < len; i++) {
        arr[i] = obj[i];
    }
    return arr;
}
function updateGameAreaImages(id, place) {
    var gameareas = toArray(document.getElementsByClassName('gamearea'));
    gameareas.forEach(updateImages);

    function updateImages(elem) {
        var images = elem.getElementsByTagName("img");
        images[place].src = "pics/" + id + ".png";
    }
}

function toArray(obj) {
    var arr = [];
    for (var i = 0, len = obj.length; i < len; i++) {
        arr[i] = obj[i];
    }
    return arr;
}
妞丶爷亲个 2024-12-28 14:16:39

尝试:

$('.gamearea').children('img').eq(place)[0].src = "pics/" + id + ".png";

或:

$('.gamearea').children('img').eq(place).attr("src", "pics/" + id + ".png");

$('.gamearea').children('img').eq(place) 返回元素的 jQuery“数组”,您无法直接访问此对象上的 DOM 属性。您需要使用 [0] (第一个元素)拉取 DOM 元素,或者使用 jQuery api 中的方法,在本例中是 .attr()

另外,如果您要替换 getElementById('gamearea'),您可能会使用 $('#gamearea') 而不是 $('.gamearea') ;

Try:

$('.gamearea').children('img').eq(place)[0].src = "pics/" + id + ".png";

or:

$('.gamearea').children('img').eq(place).attr("src", "pics/" + id + ".png");

$('.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 replacing getElementById('gamearea');

花伊自在美 2024-12-28 14:16:39

.eq() 返回一个 jQuery 对象。如果您想直接使用 .src 属性,则需要一个 DOM 元素(不是 jQuery 对象),您可以使用 .get() 而不是 .eq() 像这样:

$('.gamearea').find('img').get(place).src = "pics/" + id + ".png";

我还切换到 .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:

$('.gamearea').find('img').get(place).src = "pics/" + id + ".png";

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.

木落 2024-12-28 14:16:39

我知道这是一个旧答案,但肯定这是一个更好的方法......

$('.gamearea').children('img').attr("src", "pics/" + id + ".png");

I know this is an old answer, but surely this is a better way...

$('.gamearea').children('img').attr("src", "pics/" + id + ".png");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文