Javascript DOMParser
У меня трудное время, чтобы перебрать xmlDoc, любая помощь будет признательна. Вот мой оригинальный HTML
<ul class="overview">
<li class="item first odd">Li content 1</li>
<li class="item even">li content 2</li>
......
//I have a total of 16 LIs in here
<li class="item last even">li content last 16</li>
</ul>
Вот мой JavaScript:
<script>
var myHtmlContent = jQuery( "ul.overview" ).html();
var xmlDoc = new DOMParser().parseFromString(myHtmlContent , "text/html");
var root = xmlDoc.getElementsByTagName ("li");
var len = root.length;
alert(len); // I get the right number
if( len > 8 ) {
for(var i=0; i<len; i++){
var myCurrentLiContent = root[i].childNodes[0].nodeValue;
alert(myCurrentLiContent );
/*
My goal is to get the whole text like this "<li class="item
first odd">Li content 1</li>" so I can mannualy render later on,
but I get nothing from myCurrentLiContent variable...
So please help.
*/
}
}
</script>
3 ответа
Ах!! Я нашел решение, которое работает для меня. Вместо этого
<script>
....
var myCurrentLiContent = root[i].childNodes[0].nodeValue,
....
</script>
Все, что мне нужно сделать, это
<script>
....
var myCurrentLiContent = root[i].innerHtml
....
</script>
Спасибо за вашу помощь, и все они ценны для меня. Спасибо!!!
Вы получили len равным 3, но вы проверяете, превышает ли len значение 8. Это не так, поэтому ваш код не выполняется. Удалите оператор if и код будет работать нормально.
<ul class="overview">
...
var myHtmlContent = jQuery( "ul.overview" ).html();
в этом случае, myHtmlContent
это список, а не узел. Сделай это id="overview"
а также jQuery('ul#overview')
(возможно) исправить это. Лучше всего их диагностировать с помощью отладчика с переменными наблюдателями или, по крайней мере, щедрым console.log()
заявления, а не пытаться отделить его от полной капли позже.