gpt4 book ai didi

javascript - 如何使用 Javascript 遍历 ul 列表?

转载 作者:可可西里 更新时间:2023-11-01 02:39:04 25 4
gpt4 key购买 nike

我有以下 HTML 页面(页面已简化,因为它是真实页面的示例):

<html>
<head>
<script type="text/javascript" src="JavaScript/Painting.js"></script>
</head>
<body>
<div id="center-wrapper">
<div id="side-menu">
<ul>
<li><a onclick="Paint()">About</a></li>
<li><a onclick="Paint()">Contents</a></li>
<li><a onclick="Paint()">Visual</a></li>
<li><a onclick="Paint()">CSS</a></li>
<li><a onclick="Paint()">Javascript</a></li>
</ul>
</div>
</div>
</body>
</html>

我有 Painting.js 文件(同样,有点简化):

function Paint()
{

var e = window.event;

var sender;
if (e.target)
{
sender = e.target;
}
else
{
if (e.srcElement)
{
sender = e.srcElement;
}
}

for (element in sender.parentNode.parentNode.getElementsByTagName("a"))
{
element.style.color = 'blue';
element.style.backgroundColor = '#FFFFFF';
}

sender.style.color = '#FFFFFF';
sender.style.backgroundColor = '#000000';

}

基本思路是:

  1. 找到导致事件的 HTML 元素。
  2. 向上走,直到到达 <ul>元素。
  3. 遍历列表项;找到 <a>标记并更改它们的颜色和背景
  4. 退出循环后,更改引发该事件的 HTML 元素的颜色和背景。

现在,我似乎无法到达位于 for 循环中的部分。我想我通过调用 GetElementsByTagName() 方法犯了一个错误。你能帮帮我吗?谢谢。

最佳答案

您应该只调用一次 getElementsByTagName(),缓存结果。

然后像这样遍历集合(而不是使用 for/in)。

var a_elements = sender.parentNode.parentNode.getElementsByTagName("a");

for (var i = 0, len = a_elements.length; i < len; i++ ) {
a_elements[ i ].style.color = 'blue';
a_elements[ i ].style.backgroundColor = '#FFFFFF';
}
sender.style.color = '#FFFFFF';
sender.style.backgroundColor = '#000000';

要获取目标,您可以将其作为内联onclick 中的参数传递:

   <ul>
<li><a onclick="Paint(this)">About</a></li>
<li><a onclick="Paint(this)">Contents</a></li>
<li><a onclick="Paint(this)">Visual</a></li>
<li><a onclick="Paint(this)">CSS</a></li>
<li><a onclick="Paint(this)">Javascript</a></li>
</ul>

然后你的 javascript 看起来像这样:

function Paint( sender ) {

var a_elements = sender.parentNode.parentNode.getElementsByTagName("a");

for (var i = 0, len = a_elements.length; i < len; i++ ) {
a_elements[ i ].style.color = 'blue';
a_elements[ i ].style.backgroundColor = '#FFFFFF';
}
sender.style.color = '#FFFFFF';
sender.style.backgroundColor = '#000000';
}

示例: http://jsbin.com/aroda3/

关于javascript - 如何使用 Javascript 遍历 ul 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4026485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com