我在create function中创建了文本字段行。我在create()函数中添加了delete按钮,当单击按钮时调用delete。有什么帮助吗?
<body>
<input type="button" value="createDiv" onclick="create()"/>
</body>
<script type="text/javascript" defer="defer">
function create()
{
var newDiv = document.createElement('div');
newDiv.innerHTML = "<table id='e' border><tr><td><input type='text'><button onclick=del(this.value)</button></td></tr></table>";
// newDiv.className = 'newClass';
document.body.appendChild(newDiv);
}
function del (e) {
if ('function' === typeof e.remove) {
return e.remove();
}
return e.parentNode.removeChild(e);
}
答案 0 :(得分:4)
变化:
<button onclick=del(this.value)
为:
<button onclick='del(this)'>
两个问题:
>
。del
函数希望接收要删除的元素。元素的值不合适,特别是因为按钮没有值。我不确定这会做你真正想要的。这将只删除按钮,它不会删除表行。如果您要删除整个表格,则需要上升几个等级parentNode
,直至到达<table>
元素。
此外,您应始终将属性值括在引号中。在这种情况下,它没有它们,因为值中没有空格,但你应该养成习惯。
答案 1 :(得分:0)
我猜你错过了引号和Button Tag Close标签'&gt;'
<button onclick='del(this.value)'></button>
答案 2 :(得分:0)
您的按钮的HTML代码不正确。您没有标记的结束括号,并且由于onclick
属性值周围没有分隔符,结束标记将成为值的一部分,从而导致脚本中出现语法错误。
试试这样:
newDiv.innerHTML = '<table id="e" border><tr><td><input type="text"><button onclick="del(this.value)"></button></td></tr></table>';
答案 3 :(得分:0)
如果你想删除该行,那么代码应该是这样的......
<script type="text/javascript" defer="defer">
function create()
{
var newDiv = document.createElement('div');
var rowId = "someId";
var output = "<table id='e' border><tr id='"+rowId+"'><td ><input type='text'><button onclick=del('"+ rowId +"')>delete</button></td></tr></table>";
newDiv.innerHTML = output;
newDiv.className = 'newClass';
document.body.appendChild(newDiv);
}
function del (id) {
var div = document.getElementById(id);
div.parentNode.removeChild(div);
}
</script>
如果是这样,你就像Barmar Said那样犯了很多错误。