gpt4 book ai didi

javascript - Javascript 中的广度优先遍历

转载 作者:搜寻专家 更新时间:2023-11-01 05:01:25 26 4
gpt4 key购买 nike

我想给表中的每个元素一个生成的 ID。请参阅下面的 html 表:

<table>
<tbody>
<tr>
<td>A1</td>
<td>A2</td>
<td>
<a href="#">A3</a>
</td>
</tr>
<tr>
<td>B1</td>
<td>B2</td>
<td>
<a href="#">B3</a>
</td>
</tr>
<tr>
<td>C1</td>
<td>C2</td>
<td>C3</td>
</tr>
</tbody>
</table>

我想使用广度优先遍历为每个元素指定一个 id。于是,结果变成了这样:

<table>
<tbody id="0">
<tr id="1">
<td id="4">A1</td>
<td id="5">A2</td>
<td id="6">
<a href="#" id="13">A3</a>
</td>
</tr>
<tr id="2">
<td id="7">B1</td>
<td id="8">B2</td>
<td id="9">
<a href="#" id="14">B3</a>
</td>
</tr>
<tr id="3">
<td id="10">C1</td>
<td id="11">C2</td>
<td id="12">C3</td>
</tr>
</tbody>
</table>

我已经在 jQuery 中尝试过 each() 函数为该表中的每个元素生成 id,但是 each() 函数中使用的遍历算法是预顺序遍历。

任何人都可以建议我执行此操作的 Javascript 代码吗?

最佳答案

var n = 0
var level = $("table");

while (level.children().length) {
level = level.children().each(function(_, el) {
el.id = n++;
})
}

演示: http://jsfiddle.net/J5QMK/


如果你想避免多余的 .children() 调用,你可以这样做:

while ((level = level.children()).length) {
level.each(function (_, el) {
el.id = n++;
})
}

演示: http://jsfiddle.net/J5QMK/1/

关于javascript - Javascript 中的广度优先遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16526641/

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