【问题标题】:Javascript DOMParserJavascript DOMParser
【发布时间】:2018-01-02 18:32:09
【问题描述】:

我很难循环浏览 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>

【问题讨论】:

  • 当 len 小于或等于 8 时,if(len &gt; 8) 的计算结果为 false 并且不执行您的 for 循环。以防万一,当 len 为 9 或更多时。您是否尝试在 if 之后和 for 循环之前记录一些内容?
  • 欢迎来到 Stack Overflow。当您在此处创建帐户时,建议您使用tour 并阅读help center 页面以熟悉该网站。请这样做,尤其是How to Ask,在此处发布您的下一个问题之前。您没有解释问题或提出问题。
  • 是的 Steven,我确实记录了,我的 ul 中总共有 16 个 LI。
  • 在这种情况下,它应该可以工作...您是否阻止了浏览器的连续对话?

标签: javascript for-loop domparser


【解决方案1】:

你得到的 len 等于 3,但你正在检查 len 是否大于 8。它不是,所以你的代码不会执行。去掉 if 语句,代码就可以正常工作了。

【讨论】:

  • 如您所见,...... 是一个占位符。但我认为,他希望 len 为 8,因此他需要更大或等于运算符 &gt;=
【解决方案2】:
<ul class="overview">
...
var myHtmlContent = jQuery( "ul.overview" ).html();

在这种情况下,myHtmlContent 是一个列表,而不是一个节点。将此id="overview"jQuery('ul#overview') 设置为(可能)解决此问题。最好使用带有变量观察器的调试器或至少慷慨的console.log() 语句来诊断这些问题,而不是稍后尝试从完整的 blob 中剖析它。

【讨论】:

    【解决方案3】:

    啊!!我找到了一个适合我的解决方案。 而不是这个

    <script>     
       ....
      var myCurrentLiContent = root[i].childNodes[0].nodeValue, 
      ....
    </script>     
    

    我要做的就是这个

    <script>
        .... 
        var myCurrentLiContent = root[i].innerHtml
        ....
    </script>
    

    感谢您的所有帮助,这些对我来说都很有价值。 谢谢!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2021-12-28
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      相关资源
      最近更新 更多