<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”。
答案 0 :(得分:1)
嗯,这一行当然存在一个错误:
str += decodeURIComponent(keyword);
那应该是
str += encodeURIComponent(keyword);
这可能是问题所在,decodeURIComponent
可能会破坏某些输入文本,因为您在非URL编码的字符串上使用它。
除非:
您需要查看li
元素中的实际文本,因为它们正在处理中。这显然不仅仅是一个数字,the code在Chrome中运行得很好。
我建议使用Chrome的开发工具(Shift + Ctrl + I)在函数中设置断点,并使用您的实际测试数据进行操作。或者使用Firefox的Firebug add-on执行相同的操作。