使用jQuery更改图像src

使用jQuery更改图像src,jquery,dom,image,Jquery,Dom,Image,我正在替换旧应用程序中的一些代码,而不是通过节点的id获取节点,而是通过节点的类获取节点。因为在原生JS中没有通过类获取节点的好方法,所以我使用jQuery来实现,但是新代码并没有改变img src 有明显的原因吗 旧代码: var gamearea = document.getElementById('gamearea') var images = gamearea.getElementsByTagName('img'); images[place] = "pics/" + id + ".pn

我正在替换旧应用程序中的一些代码,而不是通过节点的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";
尝试:

或:

$'.gamearea'.children'img'.eqplace返回元素的jQuery数组,您不能直接访问此对象上的DOM属性。在本例中,您需要使用[0]第一个元素来提取DOM元素,或者使用jQueryAPI中的方法

此外,如果要替换getElementById'gamearea',您可能想使用$'gamearea'而不是$'.gamearea'

.eq返回一个jQuery对象。如果要直接使用.src属性,则需要一个DOM元素,而不是使用.get而不是.eq的jQuery对象,如下所示:

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

我还切换到了.find而不是.children,以便与原始版本中的.getElementsByTagName更加等效,而且由于您没有向我们显示HTML,因此这似乎是一个更安全的假设。

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

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;
}
$('.gamearea').children('img').attr("src", "pics/" + id + ".png");

有一些很好的方法可以通过类名而不使用选择器来获取元素。你只是近视眼。正如David所说,请发布您的HTML,以便发布更好的解决方案。@Matt:虽然确实有一些好方法,例如document.getElementsByClassName,但jQuery确实使跨浏览器更容易,补偿了或。
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;
}
$('.gamearea').children('img').attr("src", "pics/" + id + ".png");