我该如何正确使用RemoveChild节点

时间:2012-12-14 05:41:56

标签: javascript node.js removechild

我想删除表格中的一个元素

我尝试使用tr.removeChild(tr.childNodes [2]);

删除我的第三行元素,但它确实不起作用

function smile()
{
document.getElementById("p1").style.backgroundImage = 'url(smile.jpg)';
}
function twice()
{
document.getElementById("p2").innerHTML="Smile Smile";
}
function empty()
    {
//this is the part i want to remove , i want to remove the text inside it
    tr.removeChild(tr.childNodes[3]);
}

</script>
</head>

<body>

<table border = "1" >
<form>
<tr>
<th onclick="smile()"><input type="button" name="person1" value="Make it smile!" id="person4" size="30" </th>
<th onclick="twice()"><input type="button" name="person1" value="Make it smile twice!" id="person4" size="30" </th>
<th onclick="empty()"><input type="button" name="person1" value="Make it empty" id="person4" size="30" </th>
</tr>

2 个答案:

答案 0 :(得分:0)

一些事情:

  • 您需要在tr函数内设置empty(),现在它不会设置为任何内容。

  • 数组从0开始编入索引,因此您告诉它删除第4个子项。尝试将其更改为:

    tr.removeChild(tr.childNodes [2]);

答案 1 :(得分:0)

现场演示:http://jsfiddle.net/SbDXC/

我发现您的代码存在一些问题。

首先,您需要定义tr(参见演示)。

其次,在表中,使用行和单元格比childNodes更可靠。要删除第一行(索引0)的第三个单元格(索引2),只需使用:

table.rows[0].removeChild(table.rows[0].cells[2]);​

childNodes的问题在于,在某些浏览器中,换行符将被视为节点。

[编辑]更短:table.rows[0].deleteCell(2);​