набор вложенных элементов (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, время: 09:37. |