Возьмите этот HTML:Проверка того, содержит ли элемент HTML примитивный текст?
<div id="el1">
<div id="el2">
<div id="el3">
Hello
<div id="el4">
World
</div>
</div>
</div>
</div>
Обратите внимание, что el3
и el4
содержат примитивный текст; а именно «Hello» и «World». Другие элементы (el1
и el2
) содержат только другие элементы.
И все же, используя чистый JavaScript, все их свойства innerHTML
указывают, что они содержат некоторую форму текста.
Как можно использовать чистый JavaScript для проверки того, содержит ли конкретный элемент примитивный текст в качестве дочернего. В этом случае метод также распознает el3
как содержащий примитивный текст (хотя он также содержит и следующий элемент).
Что-то вроде этого:
var els = getElementByTagName("*");
for(var i = 0; i < els.length; i++){
if(/* element contains text */){
// do something
}
}
Является ли это на самом деле просто работа для регулярных выражений? Со всеми свойствами HTMLElement вы бы подумали, что будет лучший способ.
Нет jQuery, спасибо.
Определите «примитивный текст». Все элементы в этом примере содержат текстовые узлы. Вместо использования изобретенного выражения, такого как «примитивный текст» без определения, вы должны определить тест, который хотите выполнить. Возможно, вы хотите проверить, содержит ли элемент текстовые узлы, у которых есть контент, отличный от пробельных символов? Тогда вам просто нужно определить, какие символы следует рассматривать как символы пробелов, а остальное - простое кодирование. –
Вы немного опоздали на вечеринку. Учитывая три ответа, все компетентные, были выдвинуты, что большинство людей понимают мое «выдуманное выражение». Если бы я знал входы и выходы DOM, то, возможно, я мог бы сформулировать «текстовые узлы с содержанием, отличным от пробелов». Но я решил попытаться описать то, что было после, и надеюсь, что кто-то более творческий, возможно, сможет понять, что я имел в виду. К счастью, они это сделали. – shennan