Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 34

Не находится элемент на странице

25.06.2025, 22:20. Показов 2116. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Ситуация такая: на странице есть кнопка, по нажатию на которую в html добавляется несколько новых тегов span с текстом (теги появляются, я проверял). Потом делаю поиск тегов span
let elem = document.querySelectorAll('span');

Старые теги находит, а новые нет. Что за фигня?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.06.2025, 22:20
Ответы с готовыми решениями:

Как из формы которая находится на странице которая грузилась первой передать информацию на вторую страницу?
По ходу работы с документом, в один фрэйм у меня грузется сначало первая страница, потом заместно...

Нужно выделить пункт меню, на странице которого пользователь находится в данный момент
Добрый день, CSS и HTML более менее выучила, а в JS пока нет желания лезть, вот ищу готовые...

Вызов в html-странице Vue, который находится в отдельном файле
Здравствуйте! Гуглю, гуглю, но так и не могу найти хорошее объяснение на вопрос, как банально имея...

36
 Аватар для voraa
1255 / 1187 / 179
Регистрация: 21.01.2024
Сообщений: 5,494
25.06.2025, 22:30
А код html и js секретные?
Кто же вам что скажет, не видя, что там творится.
0
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 34
25.06.2025, 23:08  [ТС]
До нажатия
HTML5
1
<div class="styled__SelectStyled-sc-15n6gx6-0 HHVbn uikit-select"><div class="styled__SelectInputBox-sc-15n6gx6-1 csquon uikit-select_box"><div class="styled__SelectInputValue-sc-15n6gx6-4 htsPlN"><span class="styled__SelectInputSearch-sc-15n6gx6-2 bOjFHH"><input autocomplete="off" readonly="" placeholder="Выберите шаблон" class="styled__SelectInput-sc-15n6gx6-5 onyxk" value=""></span><span title="" class="styled__SelectInputItem-sc-15n6gx6-3 RkdSN uikit-select-inputItem"></span></div><div class="styled__ControlIconStyled-sc-r7tvgm-0 icGPJJ uikit-flatList_control-icon"><svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div><div tabindex="-1" role="list" class="styled__SelectList-sc-15n6gx6-6 fFVLly uikit-select_list"></div></div>
После нажатия
HTML5
1
<div class="styled__SelectStyled-sc-15n6gx6-0 HHVbn uikit-select"><div class="styled__SelectInputBox-sc-15n6gx6-1 htxrpz uikit-select_box"><div class="styled__SelectInputValue-sc-15n6gx6-4 htsPlN"><span class="styled__SelectInputSearch-sc-15n6gx6-2 bOjFHH"><input autocomplete="off" readonly="" placeholder="Выберите шаблон" class="styled__SelectInput-sc-15n6gx6-5 onyxk" value=""></span><span title="" class="styled__SelectInputItem-sc-15n6gx6-3 RkdSN uikit-select-inputItem"></span></div><div class="styled__ControlIconStyled-sc-r7tvgm-0 icGPJJ uikit-flatList_control-icon"><svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div><div tabindex="-1" role="list" class="styled__SelectList-sc-15n6gx6-6 creHhJ uikit-select_list"><div data-label="текст какой-то" data-value="230697" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 kOyKQH select-dropdown-option" role="option"><span>текст какой-то</span></div><div data-label="Завтра могу сделать." data-value="102846" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option"><span>Завтра могу сделать.</span></div><div data-label="текст какой-то" data-value="15439" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option"><span>текст какой-то</span></div><div data-label="текст какой-то" data-value="76256" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option"><span>текст какой-то</span></div><div data-label="текст какой-то" data-value="15296" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option"><span>текст какой-то</span></div><div data-label="текст какой-то" data-value="230702" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option"><span>текст какой-то</span></div><div data-label="текст какой-то" data-value="256641" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option"><span>текст какой-то</span></div><div data-label="текст какой-то" data-value="106421" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option"><span>текст какой-то</span></div></div></div>
Добавлено через 7 минут
JavaScript
1
2
3
4
5
6
7
8
9
function findElementByTagAndText(tag, text){
    console.log('tag = ' + tag);
    console.log('text = ' + text);
     let elem = document.querySelectorAll(tag); //собираем все элементы span в nodelist
    let pattern = new RegExp(text, "i");
   let elem2 = Array.from( elem ).filter( e => pattern.test(e.textContent) );
    console.log('list of span array = ' + elem2.length);
    return elem2[0];
}
Получаю
tag = span
text = текст какой-то
list of span array = 0
0
 Аватар для voraa
1255 / 1187 / 179
Регистрация: 21.01.2024
Сообщений: 5,494
26.06.2025, 06:28
Цитата Сообщение от Дмитрий2003 Посмотреть сообщение
делаю поиск тегов span
let elem = document.querySelectorAll('span');
Старые теги находит, а новые нет. Что за фигня?
Так выведите elem.length. И посмотрите, находит document.querySelectorAll('span'); или нет.

А потом уже думать, почему регулярка их не находит.
0
Заблокирован
26.06.2025, 07:40
Дмитрий2003, если динамически создаешь элементы, то потом так же динамически создавай JS, который будет эти элементы находить.
JavaScript
1
2
3
4
5
6
7
8
let script = document.createElement('script');
script.textContent = `
  (function() {
    let elems = document.querySelectorAll('span');
     console.log('Найдено элементов span:', elems.length);
  })();
`;
document.head.appendChild(script);
0
 Аватар для voraa
1255 / 1187 / 179
Регистрация: 21.01.2024
Сообщений: 5,494
26.06.2025, 07:53
Цитата Сообщение от black1385 Посмотреть сообщение
если динамически создаешь элементы, то потом так же динамически создавай JS, который будет эти элементы находить.
Что за бред я прочитал?
Зачем скрипт динамически?
0
Заблокирован
26.06.2025, 08:04
voraa, ну пусть проверит. У меня похожее было. Не находил новые элементы.
0
Заблокирован
26.06.2025, 08:42
Цитата Сообщение от voraa Посмотреть сообщение
А потом уже думать, почему регулярка их не находит.
Я проверил. Код рабочий. Вставил его html прямо в страницу и проверил в консоли. JS просто не видит, вероятно, эти новые элементы.
Миниатюры
Не находится элемент на странице  
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,189
26.06.2025, 08:47
Цитата Сообщение от black1385 Посмотреть сообщение
Не находил новые элементы.
Это нонсенс!
Новые элементы ничем не отличаются от старых.
0
Заблокирован
26.06.2025, 08:52
Есть предположение, что символы не те. Может пробелы другие и поэтому не находит.
Цитата Сообщение от krvsa Посмотреть сообщение
Новые элементы ничем не отличаются от старых.
В данном случае они отличаются. Если бы не отличались, то находил бы
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,189
26.06.2025, 12:31
Обретите веру, братья!

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<style>
    span {
        display: block;
    }
</style>
 
<button id='add'>Добавить</button>
<button id='test'>Тест</button>
<p></p>
 
<script>
const ot = document.querySelector('p')
add.addEventListener('click', _ => {
    const o = document.createElement('span')
    o.textContent = (new Date).toISOString()
    ot.insertAdjacentElement('beforeend', o)
})
test.addEventListener('click', _ => {
    const v = ot.querySelectorAll('span').length
    alert(`Элементов ${v}шт.`)
})
</script>
Добавлено через 3 часа 35 минут
Для укрепления веры...

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<button id='test'>Тест</button>
<button id='add'>Добавить элементы</button>
<div class="styled__SelectStyled-sc-15n6gx6-0 HHVbn uikit-select">
    <div class="styled__SelectInputBox-sc-15n6gx6-1 csquon uikit-select_box">
        <div class="styled__SelectInputValue-sc-15n6gx6-4 htsPlN">
            <span class="styled__SelectInputSearch-sc-15n6gx6-2 bOjFHH">
                <input autocomplete="off" readonly="" placeholder="Выберите шаблон" class="styled__SelectInput-sc-15n6gx6-5 onyxk" value="">
            </span>
            <span title="" class="styled__SelectInputItem-sc-15n6gx6-3 RkdSN uikit-select-inputItem"></span>
        </div>
        <div class="styled__ControlIconStyled-sc-r7tvgm-0 icGPJJ uikit-flatList_control-icon">
            <svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg>
        </div>
    </div>
    <div tabindex="-1" role="list" class="styled__SelectList-sc-15n6gx6-6 fFVLly uikit-select_list"></div>
</div>
 
<script>
 
const html = `
    <div data-label="текст какой-то" data-value="230697" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 kOyKQH select-dropdown-option" role="option">
        <span>текст какой-то</span>
    </div>
    <div data-label="Завтра могу сделать." data-value="102846" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option">
        <span>Завтра могу сделать.</span>
    </div>
    <div data-label="текст какой-то" data-value="15439" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option">
        <span>текст какой-то</span>
    </div>
    <div data-label="текст какой-то" data-value="76256" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option">
        <span>текст какой-то</span>
    </div>
    <div data-label="текст какой-то" data-value="15296" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option">
        <span>текст какой-то</span>
    </div>
    <div data-label="текст какой-то" data-value="230702" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option">
        <span>текст какой-то</span>
    </div>
    <div data-label="текст какой-то" data-value="256641" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option">
        <span>текст какой-то</span>
    </div>
    <div data-label="текст какой-то" data-value="106421" data-disabled="false" class="styled__SelectListItem-sc-15n6gx6-7 gAohFE select-dropdown-option" role="option">
        <span>текст какой-то</span>
    </div>
`
const ot = document.querySelector('.styled__SelectList-sc-15n6gx6-6.fFVLly.uikit-select_list')
add.addEventListener('click', _ => {
    ot.innerHTML = html
})
test.addEventListener('click', _ => {
    const v = document.querySelectorAll('span').length
    alert(`Элементов ${v}шт.`)
})
</script>
0
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 34
26.06.2025, 21:13  [ТС]
Я наверное не очень хорошо объяснил. Сайт не мой, я много с ним работаю и чтобы облегчить работу использую расширение браузера tampermonkey. Расширение внедряет на страницу мой собственный скрипт. Работает скрипт так: на странице создается кнопка, по нажатию на которой раскрывается список шаблонов, требуется кликнуть на определенном элементе списка. Списка изначально на странице нет, выводится скриптом. Кнопка работает, список раскрывается. Но дальше ничего не работает, пункт не выбирается и не нажимается. Ещё недавно неделю назад всё работало, а теперь перестало работать. Я плохо разбираюсь в JavaScript, но я так понял, что скрипт не находит пункты списка, пишет undefined.
Код поиска элементов span на странице рабочий. Но он находит только элементы которые находились на странице при загрузке страницы, а вот элементы которые добавляются скриптом он не находит.
0
 Аватар для voraa
1255 / 1187 / 179
Регистрация: 21.01.2024
Сообщений: 5,494
26.06.2025, 21:20
Цитата Сообщение от Дмитрий2003 Посмотреть сообщение
пишет undefined.
На что именно он пишет undefined?
0
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 34
26.06.2025, 21:49  [ТС]
JavaScript
1
2
3
4
5
    let elem = document.querySelectorAll(tag); //собираем все элементы span в nodelist
    let pattern = new RegExp(text, "i");
   let elem2 = Array.from( elem ).filter( e => pattern.test(e.textContent) );//Пустой список 
    console.log('list of span array = ' + elem2.length);// 0
    alert(elem2[0]);//undefined
0
 Аватар для voraa
1255 / 1187 / 179
Регистрация: 21.01.2024
Сообщений: 5,494
26.06.2025, 22:27
Цитата Сообщение от voraa Посмотреть сообщение
Так выведите elem.length. И посмотрите, находит document.querySelectorAll('span'); или нет.
Чему равно elem.length? 0? Старое количество span (до добавления)? Новое количество?
0
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 34
26.06.2025, 23:38  [ТС]
JavaScript
1
2
3
4
5
6
7
8
//До
 let elem = document.querySelectorAll('span');
        console.log('list of span array1 = ' + elem.length);// 14
        //Раскрываем шаблоны
        let templates = openTemplates(); //Сработало как надо, выпадающий список виден.
//после
        elem = document.querySelectorAll('span');
        console.log('list of span array 2= ' + elem.length);// 14
0
 Аватар для voraa
1255 / 1187 / 179
Регистрация: 21.01.2024
Сообщений: 5,494
27.06.2025, 06:51
А openTemplace только создает эти span и подключает их к DOM?
Наверно в devtools надо смотреть что там происходит.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
03.07.2025, 14:12
Цитата Сообщение от Дмитрий2003 Посмотреть сообщение
JavaScript
1
2
3
4
5
6
7
8
//До
 let elem = document.querySelectorAll('span');
        console.log('list of span array1 = ' + elem.length);// 14
        //Раскрываем шаблоны
        let templates = openTemplates(); //Сработало как надо, выпадающий список виден.
//после
        elem = document.querySelectorAll('span');
        console.log('list of span array 2= ' + elem.length);// 14
Надо смотреть, что делает openTenplates..

То, что выпадающий список виден еще ни о чем не говорит. Есть же и асинхронный код.. когда код исполняется не сразу, а ставится в очередь на исполнение.. и может быть такая штука, что сначала отработает ваш код целиком, а потом уже что-то что раскроет список, и нужно смотреть как появляются списки.. может они вообще подгружаются по аякс..
0
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 34
03.07.2025, 18:20  [ТС]
Цитата Сообщение от sad67man Посмотреть сообщение
может они вообще подгружаются по аякс..
Так и есть.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3827 / 1664 / 429
Регистрация: 14.03.2022
Сообщений: 4,189
03.07.2025, 18:46
Цитата Сообщение от Дмитрий2003 Посмотреть сообщение
Так и есть.
Значит на момент твоего запроса их просто нет в ДОМ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2025, 18:46
Помогаю со студенческими работами здесь

Нужно сделать кнопку на СВОЕЙ странице с урлом взятой с кнопки на ЧУЖОЙ странице
Мне нужно сделать кнопку на СВОЕЙ странице с урлом взятой с кнопки на ЧУЖОЙ странице... Урл кнопки...

С помощью таймера отобразить на странице текущее время, день недели и дату на странице
Здравствуйте. Я начинающий помогите пожалуйста с заданием. Буду признателен. С помощью таймера...

Необходимо создать три кнопки во внутренней странице (во 2о странице)
VK Mini Apps (&quot;web&quot;) на React. Есть страница. На странице 5 активных кнопок (Тренировки,...

Надо удалить со страницы контрол, который находится внутри формы
Надо удалить со страницы контрол, который находится внутри формы var frm; //Переменная формы var...

Где может находится JavaScript функция, указанная в HTML коде страницы?
Всем привет. Сам я из смежной темы: 1С. Пишу парсер под 1с . В HTML, JavaScript, мягко говоря...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru