Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除函数无法删除div_Javascript - Fatal编程技术网

Javascript 删除函数无法删除div

Javascript 删除函数无法删除div,javascript,Javascript,我已经在create函数中创建了文本字段行。我在create函数中添加了delete按钮,单击该按钮时调用delete。有什么帮助吗 <body> <input type="button" value="createDiv" onclick="create()"/> </body> <script type="text/javascript" defer="defer"> function create() { var ne

我已经在create函数中创建了文本字段行。我在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);
}

我猜您缺少引号和按钮标记Close标记'>'

<button onclick='del(this.value)'></button>
更改:

<button onclick=del(this.value)
致:

两个问题:

您错过了关闭>。 del函数期望接收要删除的元素。元素的值不合适,尤其是因为按钮没有值。 我不确定这是否能满足你的要求。这只会删除按钮,不会删除表行。如果要删除整个表,需要向上移动parentNode的多个级别,直到到达元素


此外,还应始终将属性值括在引号中。在这种情况下,没有它们也可以工作,因为值中没有空格,但您应该养成习惯。

按钮的HTML代码不正确。标记没有结束括号,并且由于onclick属性值周围没有分隔符,结束标记将是该值的一部分,从而导致脚本中出现语法错误

试着这样做:

newDiv.innerHTML = '<table id="e" border><tr><td><input type="text"><button onclick="del(this.value)"></button></td></tr></table>';

如果你想删除行,那么代码应该是这样的

<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>

如果是这样的话,正如巴尔马所说,你犯了很多错误

removeChild希望删除一个节点,而不是字符串,不是事件对象或DOM元素,而是按钮的值,因为您正在将此.value传递给del。请正确缩进代码。顺便说一句,s在外部或无效-将其移到正文中。@FelipeKM您的编辑无效。您跨越行边界破坏了一个字符串,取消了一行的注释。无法工作。你的意思是,我写错了,我是这样做的:删除但不工作的银行,但我会删除整行。只是删除了按钮,我知道。我在回答中说过。请阅读我的回答中以开头的部分,我不确定这是否能满足您的需要>我正在尝试删除整行而不是表。然后转到节点并删除它。不过,您的桌子只有一行。您确定要在每次创建时创建一个新表,而不仅仅是向表中添加一行吗?非常感谢。告诉我一些事情现在正在做什么1 onclick=del'+divId+'以及为什么它是这样写的'+divId+',2divID=someID;newDiv.id=divId;我已经编辑了答案,请看一看,现在只有你想要的行被删除了。我正在传递“rowId”,你想删除的tr。你能总结一下onclick=del“+rowId+”中的one+rowId+吗。需要进行小的解释,因为它确实构建了我的新概念。当您单击delete按钮调用del函数时,在函数定义中,del获取字符串“someId”作为id,该字符串由onclick=del'+rowId+'传递。“+”是javascript中的连接运算符。rowId是变量,所以我们这样写。del'+rowId+'。希望这对你有帮助。
<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>