gpt4 book ai didi

javascript - 为表格中的每一行添加 onclick 事件

转载 作者:行者123 更新时间:2023-12-03 06:00:15 24 4
gpt4 key购买 nike

我有一个由js动态生成的HTML表格,我想为每一行添加一个onClick事件。
像这样
(由于我原来的代码中需要传递复杂的参数,所以我使用Javascript添加了onclick函数):

<!DOCTYPE html>
<html>
<body>
<table align="center" id="tableID" border="1" style="cursor: pointer;">
<thead>
<th>Text</th>
<th>MoreText</th>
<th>Lorem</th>
<th>Ipsum</th>
</thead>
</table>
<br />


<script type="text/javascript">
for (var i = 0; i < 4; i++) {
document.getElementById("tableID").innerHTML += '<tr><td>Text</td><td>MoreText</td><td>Lorem</td><td>Ipsum</td></tr>';

document.getElementById("tableID").rows[i+1].onclick = function () {
alert("Hello World");
//alert(i);
};
}
</script>
</body>
</html>

如果表格行是固定的并在 HTML 文档中声明,则使用此方法是有效的,
但在我的代码(动态生成的表行)中,onClick 函数仅适用于最后一行。

我猜这可能是异步问题,但我无法弄清楚。

更新
根据@Quentin的方法,我编辑了我的代码。效果很好。

<!DOCTYPE html>
<html>
<body>
<table align="center" id="tableID" border="1" style="cursor: pointer;">
<thead>
<th>Text</th>
<th>MoreText</th>
<th>Lorem</th>
<th>Ipsum</th>
</thead>
</table>
<br />

<script type="text/javascript">
for (var i = 0; i < 4; i++) {
var table = document.getElementById('tableID');

var tr = document.createElement('tr');
tr.onclick = function () {
alert("Hello World");
};

var td1 = document.createElement('td');
td1.innerText = "Text";
var td2 = document.createElement('td');
td2.innerText = "MoreText";
var td3 = document.createElement('td');
td3.innerText = "Lorem";
var td4 = document.createElement('td');
td4.innerText = "Ipsum";

tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
tr.appendChild(td4);

table.appendChild(tr);
}
</script>
</body>
</html>

最佳答案

您正在为 innerHTML 分配一个新值。

这将删除所有现有的 DOM 元素以及附加到它们的事件处理程序并创建新的元素(但您没有任何代码来重新创建要删除的事件处理程序)。

不要使用innerHTML。使用标准 DOM 方法:createElementappendChild 等。然后您可以将新行添加到表主体中,而无需更改已有的内容。

关于javascript - 为表格中的每一行添加 onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39777197/

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