gpt4 book ai didi

Javascript deleteRow 导致indexSizeError,需要关闭

转载 作者:行者123 更新时间:2023-12-02 18:38:09 25 4
gpt4 key购买 nike

我有这个代码:

var table = document.getElementById("editTable");
var row = table.insertRow(-1);
var i = row.rowIndex;

var remove = document.createElement("input");
remove.type = "button";
remove.value = "Remove";
remove.onclick = (function() {
var I = i;
return function() {
table.deleteRow(I);
}
})();

var td1 = row.insertCell(-1);
td1.appendChild(remove);

我在这里阅读了几篇文章,但我不明白我做错了什么。当我尝试删除我创建的最后一行时,出现此错误:

IndexSizeError: Index or size is negative or greater than the allowed amount
table.deleteRow(I);

我很确定这是一个关闭问题。我了解 JavaScript 中匿名函数的作用域,但不了解其语法;

最佳答案

我认为你在这里过度思考了整个函数/匿名函数/闭包的内容。看起来有点太复杂了。试试这个代码:

var table = document.getElementById("editTable");
var row = table.insertRow(-1);

var remove = document.createElement("input");
//Append input first so you can get it's parent
var td1 = row.insertCell(-1)
.appendChild(remove);

remove.type = "button";
remove.value = "Remove";

remove.onclick = function () {
var parent = this.parentNode.parentNode; //get the row node
table.deleteRow(parent.rowIndex - 1); //Delete the row index behind it.
};

jsFiddle

关于Javascript deleteRow 导致indexSizeError,需要关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17099835/

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