Получить элемент по тегу и классу

У меня есть script

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

и позже

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

Я хотел бы определить, что img должен быть class='something'

(Получите первый img с class= "что-то" ) 10 раз заранее!

Ответ 1

Используйте

 querySelectorAll('img.classname')[0]

это возвращает первое изображение с классом, установленным в имя класса. Однако jQuery лучше!

$('img.classname')

Ответ 2

Просто установите его...

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");

Ответ 3

это выбирает первый img с class= 'something':

var firstImg = $('img.something')[0];

Ответ 4

Если вы не можете выбросить старые браузеры, вам понадобится цикл.

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;
    }
}