1


我有一个文本列表,我想更改它们的 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>

-谢谢。

更新 正在使用的 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();">
4

2 回答 2

4

你试过使用getElementsByTagName吗?像它这样的 Sonds 会帮助你找到你正在尝试使用的元素。

编辑

如果您可以为包含您要处理的 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();">
于 2012-12-27T11:51:16.140 回答
1

鉴于您希望使用 jQuery 的 - 不是那么遥不可及的 - 前提条件,您可以选择它们并使用“每个”迭代它们。

$("li").each( 
function() { $(this).html("changed content"); }
);

如果你不使用 jQuery,那么使用 js 库来帮助你处理古怪的 dom 可能不是一个坏主意......

总体思路

  1. 选择节点
  2. 迭代和更改 html

总是一样的。

于 2012-12-27T11:51:11.387 回答