#javascript #html #jquery #dom
Вопрос:
lt;div class="test"gt; Div Text lorem ipsum lt;brgt; lorem ipsum lt;p class="some_class"gt;Paragraph Content lt;brgt; tag and again child nested in it lt;spangt; span contentlt;/spangt;lt;/pgt;lt;/divgt;.
Я хочу получить html-код элемента div. Вот сложная часть, если я использую .html (), это также будет включать дочерние теги, которые lt;p class="some_class"gt;....lt;spangt;...lt;/spangt;...lt;/pgt;
мне нужны только для тегов br. Как я могу этого достичь?
конечный результат должен выглядеть так:
Div Text lt;brgt;
lorem ipsum lt;brgt;
тег содержимого абзаца lorem ipsum и снова вложенный в него дочерний элемент содержимого span
Комментарии:
1. вам придется проанализировать результаты, и поскольку разбор html-плохая идея (html не является структурированным языком, что очень затрудняет анализ или поиск с помощью регулярных выражений), я бы предложил пойти другим путем
2. Почему вам нужны только
lt;brgt;
теги?. Если вам нужен только текст , присутствующий внутриdiv
, вы можете использоватьinnerText
то, что даетn
вместоlt;brgt;
.
Ответ №1:
Если вы хотите, чтобы внутри любого элемента присутствовал только текст, вы можете использовать innerText
, но в результате вы упомянули, что вам нужен lt;brgt;
тег. Таким образом, вы можете innerText
сначала использовать, а затем заменить строку feed ( n
) lt;brgt;
тегом.
var divtext = document.getElementsByClassName('test')[0].innerText; console.log(divtext); console.log(divtext.replaceAll('n', 'lt;brgt;'));
lt;div class="test"gt; Div Text lorem ipsum lt;brgt; lorem ipsum lt;p class="some_class"gt;Paragraph Content lt;brgt; tag and again child nested in it lt;spangt; span contentlt;/spangt;lt;/pgt;lt;/divgt;
Ответ №2:
Вы можете использовать цикл JavaScript (while/for).
Вот живой пример.
lt;!DOCTYPE htmlgt; lt;html lang="en"gt; lt;headgt; lt;titlegt;Get Children Content with br taglt;/titlegt; lt;/headgt; lt;bodygt; lt;div id="test"gt; Div Text lorem ipsum lt;brgt; lorem ipsum lt;p class="some_class"gt;Paragraph Content lt;brgt; tag and again child nested in it lt;spangt; span contentlt;/spangt;lt;/pgt;lt;/divgt;. lt;/bodygt; lt;scriptgt; // get all the content of the div tag let test = document.getElementById("test"); let testData = test.innerHTML; let finalText = ""; // this variable will decide to capture the lettes when captured in loop. let capture = true; // starting to over all the cahracter in the text content for (let i = 0; i lt; testData.length; i ) { let recursive = false; if ( testData.charAt(i) == "lt;" amp;amp; testData.charAt(i 1) == "b" amp;amp; testData.charAt(i 2) == "r" ) { // if lt;brgt; tag is receved skip 4 char and increment the i value capture = true; recursive = true; } else if (testData.charAt(i) == "lt;") { // if lt; is found stop capturing capture = false; } else if (testData.charAt(i) == "gt;") { // if gt; is found start capturing but skip this iteration capture = true; } // main capturing code if (capture) { if (testData.charAt(i) != "gt;") { finalText = finalText testData.charAt(i); } if (recursive) { finalText = finalText testData.charAt(i 1) testData.charAt(i 2) testData.charAt(i 3); i = i 3; } } } console.log(finalText); lt;/scriptgt; lt;/htmlgt;