0

一旦用户单击 addmore 链接,下面的代码将添加元素。

当用户单击删除链接时,问题就出现了。

我的代码上有类似的东西

<script language="JavaScript">
var count=1;
function addmore() {
    alert(count);
    var printme = "<table id='table"+count+"'><tr><td><a href='#' onclick='remove(count)'>remove</a></td></tr></table";
    //(other code here)...
    count++;
}

function remove(y) {
    alert(y)
    var tab = 'table'+y;    
    document.getElementById(tab).style.display =  "none";
}
</script>

我在这里使用了警报,因此我可以轻松监控它给出的计数值。

这里发生的是'y'的值(在删除函数上)总是相同的,这是循环中的最后一个值。

例如,我单击链接 addmore 3 次,因此我的“count=4”的最后一个值。假设我想删除第三个元素,此时当我单击删除链接时,它必须具有像这样的 remove(3) 传递参数。但是这里发生的是我点击的任何元素,它似乎总是以这种方式传递参数 remove(4)

4

4 回答 4

2

那是因为你有count一个全局变量。

尝试.....onclick='remove("+count+")'....“锁定”价值。

于 2012-12-06T04:27:47.223 回答
1

请试试这个:

var printme = "<table id='table"+count+"'><tr><td><a href='#' onclick='remove("+count+")'>remove</a></td></tr></table";

还可以尝试以下行删除功能:

document.getElementById(""+tab+"").style.display =  "none";
于 2012-12-06T04:28:59.350 回答
1

也许只是 onclick='remove('+count+')'

你可以做类似的事情

<html>
<head>
<script type="text/javascript">
var count=1;
function addmore() {
    var id = 'table' + count;
    var table = document.createElement('table');
    table.setAttribute('id', id);
    var tr = document.createElement('tr');
    var td = document.createElement('td');
    var a = document.createElement('a');
    a.setAttribute('href', '#');
    a.appendChild(document.createTextNode('remove ' + id));
    a.onclick = function() {
        table.style.display = 'none';
        document.body.removeChild(table);
    };
    td.appendChild(a);
    tr.appendChild(td);
    table.appendChild(tr);
    document.body.appendChild(table);
    count++;
}
</script>
</head>
<body>
<a href="#" onclick="addmore()">Add Table</a>
</body>
</html>

使用像这样定义的表引用和 onclick,您不需要 id

于 2012-12-06T04:29:26.603 回答
1

之前的所有答案都是正确的,onclick 是指调用 remove 时的当前变量计数。

当您为表格生成文本时,您将使用 count 的值,因为它是:

onclick='remove('+count+')...

您可以省略 id 并使用以下方法完全计数:

onclick='remove(this.parentElement.parentElement.parentElement);'...

function remove(elementToRemove){
    elementToRemove.parentElement.removeChild(elementToRemove);
}
于 2012-12-06T04:48:06.470 回答