2016-05-12 1 views
0

В настоящее время я пытаюсь выяснить способ получения идентификатора элемента, в зависимости от того, содержит ли его класс что-то. Я не уверен, есть ли лучший способ сделать это, чем я в настоящее время, но, оглядевсь, ничего не подходит точно, что у меня есть. Код, который у меня есть, есть, где я ищу элемент div, класс которого содержит строку «один», но не ограничивается этим. В настоящее время существует только один элемент, содержащий эту строку, но предупреждение дает мне [Object NodeList] (я вполне может быть усложнять это):Получить идентификатор элемента, в котором класс содержит заданную строку

$idToMove = document.querySelectorAll('div[class^="one"]'); 
     alert($idToMove); 
+0

Возможный дубликат [Найти все элементы на странице, чей идентификатор элемента содержит определенный текст с помощью jQuery] (http://stackoverflow.com/questions/1206739/find-all-elements-on-a-page- который-element-id-contains-a-some-text-using-jquer) – TylerH

ответ

2

document.querySelectorAll() Возвращает список узлов (вроде как массив), если вы уверены, что будет только один, у вас есть пара вариантов.

1) Используйте .querySelector вместо:

// returns the first node that matches 
var elm = document.querySelector('div[class~="one"]'); 
console.log(elm.id); 

2) Доступ первый элемент в возвращаемом списке:

// returns all nodes that match 
var elms = document.querySelectorAll('div[class~="one"]'); 
console.log(elms[0].id); 

Убедитесь обнулить проверить возвращения .querySelector и проверки длины возвращения .querySelectorAll.

Также обратите внимание, что я использую ~=, а не ^=. Вы можете прочитать on the MDN о различии между всеми операторами равенства. Но за эти два:

[атр ~ = значение] Представляет элемент с именем атрибута ATTR, значение которого является разделенный пробелами список слов, один из которых точно «значение».

[attr^= value] Представляет элемент с именем атрибута attr и первое значение которого имеет префикс «значение».

+0

Спасибо за ответ! Кажется, я возвращаю null (я решил использовать часть 1 для решения этой проблемы). Может быть, я устанавливаю класс для включения «одного» в php? Он ** ** успешно делает класс содержащим строку «один», но когда я пытаюсь выполнить console.log, это ошибки, которые не могут дать мне идентификатор null. – Wesley

+0

Обновленный ответ, вам нужно '~ =', а не '^ ='. – Chad

+0

Спасибо за помощь, что работает! Очень признателен! – Wesley