JavaScript循环问题

时间:2011-02-04 12:38:24

标签: javascript loops for-loop

<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标签添加了搜索按钮。你的想法是什么,为什么循环破碎?

修改 更多信息,

-i试用了包含131个li标签的页面上的函数。和函数适用于第一个43 li标签,

-i尝试了google chrome和firefox,结果相同。

我试着提醒(o.length)。没有问题,它返回真实的数字,“131”。

1 个答案:

答案 0 :(得分:1)

嗯,这一行当然存在一个错误:

str += decodeURIComponent(keyword);

那应该是

str += encodeURIComponent(keyword);

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

除非:

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

我建议使用Chrome的开发工具(Shift + Ctrl + I)在函数中设置断点,并使用您的实际测试数据进行操作。或者使用Firefox的Firebug add-on执行相同的操作。