набор вложенных элементов (DIV) пропадает
Динамически в функции JS формируется набор вложенных в существующий "невидимый visibility: hidden;" DIV.
<div id="невидимый div" style="visibility: hidden"></div> Сама функция: function createPage(){ .......... for (....) { let page = document.createElement('div'); page.setAttribute('id','story_'+xxx); page.setAttribute('story_id', xxx); document.getElementById('невидимый div').appendChild(page); }; getBook(); В отладчике, разумеется, присутствуют все сформированные элементы с заданными атрибутами. Формируемая функция вызывает в конце другую функцию, которая должна отрабатывать со списком сформированных DIV. И вот тут наступает кердык: вызываемая функция нихрена не видит, а на подсчет кол-ва вложенных элементов pages = elem.getElementsByTagName('div')говорит, что их тама нету вовсе, возвращая 0. Соответственно никакого перебора элементов нету, ибо нехрен перебирать.:( functuin getBook() { let elem = document.getElementById('невидимый div'); let pages = elem.getElementsByTagName('div'); // все div внутри "невидимого" div == 0, хотя их внутри родителя > 20 alert('pages='+pages.length); // возвращает, зараза, НОЛЬ!!! for (let page of pages) { // хотелось бы читать элементы... а их нету!!! тут чо-то должна была бы делать, а не с чем }; Если в первой функции записывать данные в заранее заданный массив, то вторая один хрен ничо в нём не видит... |
1. Приведите весь код в нормальном виде. Иначе, получается, что Вы записываете в элемент 'невидимый div' а ищите в элементе
'главный, он же родительский, он же невилимый, div' 2. getElementsByTagName возвращает HTMLCollection. Это не итерируемый объект. К нему нельзя применять for of |
voraa, подскажите, к какой конструкции следует обратиться, чтобы перебрать вложенные элементы?
Аналогичное обращение к структуре UL работает. А то у меня уже крыша едет... <ul> <li>xxxx</li> <li>xxxx</li> </ul> let elems = document.getElementsByTagName('li'); for(var i=0; i<elems.length; i++) { ............... }; Спасибо! |
Цитата:
Нельзя цикл for of. Нужно так let pages = elem.getElementsByTagName('div'); for (let i = 0; i < pages.length; i++) { let page = pages[i]; // тут чо-то должна была бы делать }; |
voraa, спасибо!
|
Часовой пояс GMT +3, время: 01:37. |