Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.09.2022, 10:27
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Текстовая Нода и outerHTML и indexOf
Подскажите пожалуйста, вот есть просто для примера такой HTML документ:

<div id="elementus"><span>span_1</span></div>



Я достаю текстовую ноду из этого элемента:

let my_elemen = document.getElementById("elementus");

let text_Node = my_elemen.textContent;


Однако к text_Node применить outerHTML - уже не получается, так как outerHTML возвращает Undefined:


let text_Node_outerHTML = text_Node.outerHTML;

console.log(text_Node_outerHTML);


Соответвенно и .indexOf() - тоже применить не получается ни к text_Node_outerHTML ни напрямую к text_Node:


let my_index = text_Node.indexOf("span_1");
console.log(my_index )

my_index = text_Node_outerHTML .indexOf("span_1");
console.log(my_index )


Результат undefined.

И вот вопрос, а какой тогда аналог .indexOf() можно применить к текстовой ноде ?
Ответить с цитированием
  #2 (permalink)  
Старый 04.09.2022, 10:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Сообщение от Andy_kun
Я достаю текстовую ноду из этого элемента:
код не соответствует описанию.
text_Node у вас это строка.
Сообщение от Andy_kun
Результат undefined.
что не так?
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
</head>
<body>
    <div id="elementus"><span>span_1</span></div>
    <script>
        let my_elemen = document.getElementById("elementus");
        let text = my_elemen.textContent;
        let my_index = text.indexOf("span_1");
        alert(my_index)
    </script>
</body>
</html>

Последний раз редактировалось рони, 04.09.2022 в 11:19. Причина: убрал _Node
Ответить с цитированием
  #3 (permalink)  
Старый 04.09.2022, 10:53
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Сообщение от рони Посмотреть сообщение
код не соответствует описанию.
text_Node у вас это строка.
что не так?
Суть в том, что я хочу осуществить поиск в TEXT_NODE, но так как преобразование outerHTML - не выдает String, то я не могу применить функцию поиска .indexOf().

А осуществить поиск в текстовой Ноде нужно, а как ее тогда осуществить не могу понять.
Ответить с цитированием
  #4 (permalink)  
Старый 04.09.2022, 11:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

Andy_kun,
вам показали рабочий код, зачем строку преобразовывать для поиска?
Ответить с цитированием
  #5 (permalink)  
Старый 04.09.2022, 11:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

поиск всех текстовых нод в элементе и вывод текста каждой ноды
Andy_kun,
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
</head>

<body>
    <div id="elementus"><span>span_1</span></div>
    <script>
        let my_elemen = document.getElementById("elementus");
        function my_func(element, callback) {
            const iterator = document.createNodeIterator(element, NodeFilter.SHOW_TEXT);
            let current;
            while (current = iterator.nextNode()) {
                callback(current);
            }
        }
        my_func(my_elemen, text_Node => alert(text_Node.textContent))
    </script>
</body>

</html>

Последний раз редактировалось рони, 04.09.2022 в 11:30.
Ответить с цитированием
  #6 (permalink)  
Старый 04.09.2022, 11:50
Аспирант
Отправить личное сообщение для Andy_kun Посмотреть профиль Найти все сообщения от Andy_kun
 
Регистрация: 05.08.2022
Сообщений: 64

Сообщение от рони Посмотреть сообщение
вам показали рабочий код, зачем строку преобразовывать для поиска?
Прошу извинить, да действительно работает.
Ответить с цитированием
Ответ



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

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