【问题标题】:javascript looping problemjavascript循环问题
【发布时间】:2011-02-04 12:38:24
【问题描述】:
<script type="text/javascript">
    function addbutton() {

    var o = document.getElementsByTagName('li');
    for(var i=0;i<o.length;i++) 
    {
     var keyword= o[i].innerHTML;
     var regobj = /<a (.*)>(.*)<(.)a>/g;
     keyword = keyword.replace(new RegExp("<br>", "g")," ");
     keyword = keyword.replace(regobj,"$2");
     keyword = keyword.substring(0,100);
     var str = "<br>"+ "<a class='but' target='blank' ";  
     str += "href=\"http://www.google.com.tr/search?q=";
     str += decodeURIComponent(keyword);
     str += "\">ara</a>";
     o[i].innerHTML = o[i].innerHTML + str;

    }
}
</script> 

addbutton() 在 li 标签的末尾添加了一个搜索按钮,但是当我运行时,它只循环了 43 次。所以它为前 43 个 li 标签添加了搜索按钮。你的想法是什么,为什么循环被破坏了?

编辑: 更多信息,

-我在一个包含 131 个 li 标签的页面上尝试了函数。并且功能适用于前 43 li 标签,

-我试过google chrome和firefox,结果都一样。

我试图提醒(o.length)。没问题,返回真数,“131”。

【问题讨论】:

  • 它是不是在某个特定的浏览器中不起作用?因为 getElementsByTag 名称仅适用于选定的浏览器。
  • 那么,你有多少个li?输出o.length 会得到什么?你什么时候执行这个函数?`
  • +1 我认为我们需要一些调试信息。
  • @Wolfy:如果不支持 getElementsByTagName,那么前 43 次将无法正常工作。 :-) @ocanal:在这个问题中绝对没有足够的信息来真正回答它......
  • 我敢打赌,第 44 项的字符串中没有 100 个字符,keyword = keyword.substring(0,100); 除外。

标签: javascript loops for-loop


【解决方案1】:

嗯,这行肯定有一个错误:

str += decodeURIComponent(keyword);

应该是这样的

str += encodeURIComponent(keyword);

这可能是问题所在,decodeURIComponent 可能会在某些输入文本上爆炸,因为您在未进行 URL 编码的字符串上使用它。

除非:

您需要查看li 元素中的实际文本,因为它们正在被处理。这显然不仅仅是数字问题,the code 在 Chrome 中运行良好。

我建议使用 Chrome 的开发工具 (Shift+Ctrl+I) 在函数中设置断点,并使用您的实际测试数据遍历它。或者使用 Firefox 的 Firebug add-on 来做同样的事情。

【讨论】:

猜你喜欢
  • 2016-08-02
  • 2011-08-08
  • 2020-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 2016-01-14
相关资源
最近更新 更多