我有一个文本列表,我想改变他们的innerHTML。如果我有数千个li标签(其数据来自数据库),我怎么能通过javascript做到这一点?
<div>
<ul>
<li>a</li>
<li>as</li>
<li>asd</li>
<li>asds</li>
<li>asdsa</li>
<li>asdsad</li>
<li>asdsadz</li>
<li>asdsadzc</li>
....
.....
</ul>
</div>
-Thanks。
更新 正在使用的JS代码:
function a(){
var parent = document.getElementById("z");
var i = 0;
for(i = 0; i <= parent.children.length; i++){
if(parent.children[i].tagName == "LI"){
if(i%2!=0){
parent.children[i].innerHTML="ok";
}
}
}
}
document.onload=a(); // this didn't work. so I called the function in body tag instead of that.
<body onload="a();">
答案 0 :(得分:4)
您是否尝试过使用getElementsByTagName
?像这样的喜欢它会帮助你找到你想要使用的元素。
修改强>
如果您可以为包含您正在尝试处理的li的UL元素提供ID,则可以执行以下操作:
var parent = document.getElementById("yourID");
var i = 0;
for(i = 0; i < parent.children.length; i++){
if(parent.children[i].tagName == "LI") {
//do what you want...
}
}
编辑2
您必须更改脚本的最后一行:
document.onload=a();
这一个:window.onload=a;
这将使你的函数在onLoad事件上执行。请注意,可能存在一些交叉浏览器不兼容的问题,我建议稍微研究如何在交叉浏览器方式上对onload事件执行函数,或者只是将其添加到body标签:
<body onload="a();">
答案 1 :(得分:1)
考虑到 - 目前还没有提到 - 你希望使用jQuery的前提条件,你可以选择它们并用“each”迭代它们。
$("li").each(
function() { $(this).html("changed content"); }
);
如果您不使用jQuery,使用js-library可以帮助您解决这个问题,那可能不是一个坏主意......
总体思路
总是一样的。