Проблема с document.querySelectorAll и document.getElementById
Добого дня. Имеется хтмл
<div id="allvariants"> <div id="i1"> текст 1 </div> <div id="i2" onclick="uuu()"> текст 2 </div> <div id="i3"> текст3 </div> <div id="i4"> текст 4 </div> </div> Почему не получается взять все с <div id="allvariants">. Пробовал
var numOfButton = document.querySelectorAll('#allvariants')
function uuu() {
alert(numOfButton[1].innerHTML)
}
Но ничего не получается, по айди тоже. |
PashPP,
<div id="allvariants">
<div id="i1">
текст 1
</div>
<div id="i2" onclick="uuu()">
текст 2
</div>
<div id="i3">
текст3
</div>
<div id="i4">
текст 4
</div>
</div>
<script type="text/javascript">
var numOfButton = document.getElementById('allvariants').querySelectorAll('div')
function uuu() {
alert(numOfButton[1].innerHTML)
}
uuu()
</script>
|
ID ДОЛЖЕН БЫТЬ УНИКАЛЕН.
Блджад, стабильно раз в неделю это спрашивают. Нужно в поле ответа добавить чекбокс: "Я знаю, что id - уникальный идентификатор.", и пока он не стоит не давать постить. |
Aetae,
Там типо вопрос криво задал - id - то уникальны "Почему не получается взять все div из <div id="allvariants">." |
Aetae,
Все уникально. Deff, Спасибо, но почему-то, и этот вариант у меня локально не работает, а вот если так:
function uuu() {
alert(ocument.getElementById('allvariants').querySelectorAll('div')[1].innerHTML)
}
uuu()
или даже querySelectorAll('#allvariants div')[1].innerHTML) То работает на ура. Но стоит прикрутить переменную и все. Даже не догадываюсь, что за фигня. |
PashPP,
Cогласен
<div id="allvariants">
<div id="i1">
текст 1
</div>
<div id="i2" onclick="uuu()">
текст 2
</div>
<div id="i3">
текст3
</div>
<div id="i4">
текст 4
</div>
</div>
<script type="text/javascript">
var numOfButton = document.querySelectorAll('#allvariants div')
function uuu() {
alert(numOfButton[1].innerHTML)
}
uuu()
</script>
|
Цитата:
<div id="bla"></div> <div id="bla"></div> <div id="bla"></div> <div id="bla"></div> <div id="bla"></div> <script> alert( document.querySelectorAll( '#bla' ).length ); // 5 </script>да конечно, так давно решили что лучше делать ид одним уникальным, даже в спецификации упомянули о том что мол ИД он и в африке ИД, что мол он должен быть уникален и все такое.. Но по большей части это лишь по причине того что getElementById не может выбрать элементы с одним ИД. Хотя я конечно не пропагандирую о том что ИД нужно делать не уникальным, но можно делать и не уникальным. |
Deff,
Но почему у меня тогда на компе не работает это:
var fff=document.querySelectorAll('#allvariants div')
function uuu() {
alert(fff[1].innerHTML)
}
Но тут же заводится это:
function uuu() {
alert(document.querySelectorAll('#allvariants div')[1].innerHTML)
}
|
PashPP,
Хм - я проверил в Опере Мозилле и хроме при сохранении страницы на раб стол Вон - devote мож подскажет ? |
Цитата:
Во втором случае поиск осуществляется в момент обращения, когда уже всё загружено. |
Цитата:
================================================== ====== PashPP, Но скорее всего Aetae прав про загрузку страницы(я ставил в самый конец и скрипт ниже |
Цитата:
var fff=document.querySelectorAll('#allvariants div');uuu();
function uuu() {
alert(fff[1].innerHTML)
}
|
Да, скорее всего из-за того. что недозагрузился. Ссылка на скрипт стоит в хеддере.
Как поступают в таких случаях? Заносить переменные под ф-ции или строчку со ссылкой на скрипт вниз кинуть? |
PashPP,
Ну по window.onload (но это долго в JQ есть событие загрузки DOM; Можно оставить функцию в хедере - а вызов - в конце страницы |
Почему
numOfButton[1].innerHTML Ведь элементы в NodeList нумеруются с 0. |
Deff,
Ладно, пока просто затащу все в функ-ции, которые вызываются потом кликами. Спасибо. oneguy, Эм. И что? |
Накрайняк можно и извратиться:
function uuu() {
var fff = document.querySelectorAll('#allvariants > div');
(uuu = function(){ alert(fff[1].innerHTML) })()
}
..но в обычном случае не нужно.=) |
oneguy,
Захотелось именно второй (*у мну тож мания - не тестить первые |
ВСем большое спасибо. Еще раз убедился, что туплю на ерунде. Хотя, для меня эта ерунда была не так и очевидна.
Чтоб не создавать еще одну тему, спрошу тут. Как вернуть первоначальный стиль, если использовать elem.style.backgrondColor="red" , например. Я додумался, конечно, вызвать еще раз elem.style.backgrondColor="green" с учетом, что первоначальный фон был зеленый. Но как вернуть без указания точного параметра, а просто "верни как было до тебя". |
если стиль был прописан в самом элементе то никак, ибо его ты и менял, если же в css то просто ="" .
|
Aetae,
То, что нужно. |
Цитата:
http://javascript.ru/forum/showpost....4&postcount=86 дабы каждый раз не обьяснять :) |
Закрой алерт точной с запятой.
|
| Часовой пояс GMT +3, время: 21:41. |