Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2020, 12:20
Аспирант
Отправить личное сообщение для WadimS Посмотреть профиль Найти все сообщения от WadimS
 
Регистрация: 12.11.2016
Сообщений: 80

набор вложенных элементов (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) {	// хотелось бы читать элементы... а их нету!!!
тут чо-то должна была бы делать, а не с чем 
};


Если в первой функции записывать данные в заранее заданный массив, то вторая один хрен ничо в нём не видит...

Последний раз редактировалось WadimS, 07.06.2020 в 19:15.
Ответить с цитированием
  #2 (permalink)  
Старый 07.06.2020, 08:59
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

1. Приведите весь код в нормальном виде. Иначе, получается, что Вы записываете в элемент 'невидимый div' а ищите в элементе
'главный, он же родительский, он же невилимый, div'

2. getElementsByTagName возвращает HTMLCollection. Это не итерируемый объект. К нему нельзя применять for of
Ответить с цитированием
  #3 (permalink)  
Старый 07.06.2020, 15:31
Аспирант
Отправить личное сообщение для WadimS Посмотреть профиль Найти все сообщения от WadimS
 
Регистрация: 12.11.2016
Сообщений: 80

voraa, подскажите, к какой конструкции следует обратиться, чтобы перебрать вложенные элементы?

Аналогичное обращение к структуре UL работает. А то у меня уже крыша едет...
<ul>
<li>xxxx</li>
<li>xxxx</li>
</ul>

let elems = document.getElementsByTagName('li');
for(var i=0; i<elems.length; i++) {
...............
};

Спасибо!

Последний раз редактировалось WadimS, 07.06.2020 в 15:34.
Ответить с цитированием
  #4 (permalink)  
Старый 08.06.2020, 07:13
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Сообщение от WadimS
Аналогичное обращение к структуре UL работает.
Это не аналогичное.
Нельзя цикл for of.
Нужно так
let pages = elem.getElementsByTagName('div'); 
for (let i = 0; i < pages.length; i++) {   
    let page = pages[i];
    // тут чо-то должна была бы делать
};
Ответить с цитированием
  #5 (permalink)  
Старый 08.06.2020, 09:31
Аспирант
Отправить личное сообщение для WadimS Посмотреть профиль Найти все сообщения от WadimS
 
Регистрация: 12.11.2016
Сообщений: 80

voraa, спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать обход элементов внутри DIV reno4 jQuery 4 24.07.2013 13:30
Событие onclick на div, кроме элементов внутри него klev2004 Общие вопросы Javascript 3 04.10.2012 20:33
Набор элементов Артем125 Общие вопросы Javascript 4 17.01.2012 19:20
Пропадает div belkir Элементы интерфейса 4 01.10.2011 23:35
Суммирование значений всех элементов div frolvict jQuery 1 11.07.2011 17:05