31

我有一个脚本

var firstImg = row.getElementsByTagName('img')[0];

然后

if (x){ firstImg.src='/images/checked.png'; }

我想定义 img 应该是class='something'

(使用 class='something' 获取第一个 img)

4

4 回答 4

53

使用

 querySelectorAll('img.classname')[0]

这将返回第一个将类设置为类名的图像。但是 jQuery 更好!!

$('img.classname')
于 2012-10-02T07:22:41.210 回答
8

就设置好了...

firstImg.className += "something";

...或者...

firstImg.classList.add("something");

如果您可以摆脱不支持旧浏览器的情况。

进一步阅读(免责声明:链接到我自己的博客)。

如果您打算获取具有特定类名的元素,您可以使用...

document.getElementsByClassName("something");

...或者...

document.querySelectorAll(".something");

请记住getElementsByClassName()不在 <= IE8 中。

您可以使用...

var getElementsByClassName(nodeList, className) {
    var i, results = [];
    for (i = 0; i < nodeList.length; i++) {
        if ((" " + nodeList[i].className + " ").indexOf(" " + className + " ") > -1) {
             results.push(nodeList[i]);
        }
    }

    return results; 
}

当然,如果你使用的是 jQuery,那就超级简单了……

$(".something");
于 2012-10-02T07:18:57.013 回答
1

这将选择第一个imgclass='something':

var firstImg = $('img.something')[0];
于 2012-10-02T07:21:04.563 回答
1

如果你不能扔掉旧的浏览器,那么你需要一个循环。

var imgs = row.getElementsByTagName('img'),
    some_class = 'something',
    i, first_img;

for (i = 0; i < imgs.length; i++) {
    if ((' ' + imgs[i].className + ' ').indexOf(' ' + some_class + ' ') > -1) {
       first_img = imgs[i];
       break;
    }
}
于 2012-10-02T07:32:43.450 回答