Javascript删除一个div(removeChild)
首先,我在javascript函数中动态创建一些div(某个按钮的事件处理程序),在每个div中添加一个按钮Javascript删除一个div(removeChild),javascript,html,javascript-events,Javascript,Html,Javascript Events,首先,我在javascript函数中动态创建一些div(某个按钮的事件处理程序),在每个div中添加一个按钮 newdiv.id = counter; newdiv.innerHTML = "Product " + (counter + 1) + " <br><input type='text' name='myInputs[]'><button onclick=\"return false; document.getElementById(
newdiv.id = counter;
newdiv.innerHTML = "Product " + (counter + 1) + " <br><input type='text' name='myInputs[]'><button onclick=\"return false;
document.getElementById('"+counter+"').parentNode.removeChild('"+counter+"');\">Delete item</button>";
newdiv.id=计数器;
newdiv.innerHTML=“产品”+(计数器+1)+“
删除项目”;
假设在单击按钮时删除该div
这对我不起作用。我想请你们帮忙
谢谢在执行
removeChild()
调用之前,onclick事件将返回
如果你写得更清楚,你会得到:
function () {
// leave the function
return false;
// never executed, because you called return right before
document.getElementById(counter).parentNode.removeChild(counter);
}
你必须在做完你想做的事后返回。移动
返回false
到事件的结尾。在执行removeChild()
调用之前,onclick事件将返回
如果你写得更清楚,你会得到:
function () {
// leave the function
return false;
// never executed, because you called return right before
document.getElementById(counter).parentNode.removeChild(counter);
}
你必须在做完你想做的事后返回。移动
返回false
到事件结束。返回结束javascript的执行。return语句之后不会执行任何内容。code>return结束javascript的执行。return语句之后将不会执行任何内容。看起来您在代码有机会执行之前返回了false(请尝试将其放在document.getElementById语句链之后)。此外,我不会以加号开头任何HTML属性。看起来您在代码有机会执行之前返回false(尝试将其放在document.getElementById语句链之后)。另外,我不会以加号开头任何HTML属性。默认情况下,表单中的按钮是类型submit。要停止它提交表单,请将其设置为type=“button”
。然后,您不需要返回false,如果需要,它应该位于函数的末尾
另一种方法是使用输入类型按钮。它看起来就像一个按钮,也不会提交表单
使用DOM方法添加额外的元素和监听器要好得多,但这里有一个更容易阅读的innerHTML版本(至少对我来说):
newdiv.innerHTML='Product'+(计数器+1)+'
'+
“删除项目”;
默认情况下,表单中的按钮类型为submit。要停止它提交表单,请将其设置为type=“button”
。然后,您不需要返回false,如果需要,它应该位于函数的末尾
另一种方法是使用输入类型按钮。它看起来就像一个按钮,也不会提交表单
使用DOM方法添加额外的元素和监听器要好得多,但这里有一个更容易阅读的innerHTML版本(至少对我来说):
newdiv.innerHTML='Product'+(计数器+1)+'
'+
“删除项目”;
除了语句顺序错误外,removeChild
调用也不正确。必须将DOM元素传递给removeChild
,而不是ID
虽然可以使用HTML字符串生成所有元素,但我发现在处理事件处理程序时,直接创建DOM元素是一种更干净的方法:
newdiv.id = counter;
newdiv.innerHTML = "Product " + (counter + 1) + " <br><input type='text' name='myInputs[]'>";
var button = document.createElement('button');
button.type = 'button'; // see RobG's answer
button.innerHTML = 'Delete item';
button.onclick = function() {
this.parentNode.parentNode.removeChild(this.parentNode);
};
newdiv.appendChild(button);
newdiv.id=计数器;
newdiv.innerHTML=“产品”+(计数器+1)+“
”;
var button=document.createElement('button');
button.type='button';//见罗布的答案
button.innerHTML='删除项';
button.onclick=函数(){
this.parentNode.parentNode.removeChild(this.parentNode);
};
newdiv.appendChild(按钮);
除了语句顺序错误外,removeChild
调用也不正确。必须将DOM元素传递给removeChild
,而不是ID
虽然可以使用HTML字符串生成所有元素,但我发现在处理事件处理程序时,直接创建DOM元素是一种更干净的方法:
newdiv.id = counter;
newdiv.innerHTML = "Product " + (counter + 1) + " <br><input type='text' name='myInputs[]'>";
var button = document.createElement('button');
button.type = 'button'; // see RobG's answer
button.innerHTML = 'Delete item';
button.onclick = function() {
this.parentNode.parentNode.removeChild(this.parentNode);
};
newdiv.appendChild(button);
newdiv.id=计数器;
newdiv.innerHTML=“产品”+(计数器+1)+“
”;
var button=document.createElement('button');
button.type='button';//见罗布的答案
button.innerHTML='删除项';
button.onclick=函数(){
this.parentNode.parentNode.removeChild(this.parentNode);
};
newdiv.appendChild(按钮);
想想“return”的作用。我的页面上有一个表单,单击该按钮时我不想发布它!进一步:put返回false代码>在末尾。另外,+计数器+
字符串是元素的id
?如果你需要使用字符串连接的话,这会让你大吃一惊。想想“return”的作用吧。我的页面上有一个表单,我不想在点击该按钮时发布它!进一步:put返回false代码>在末尾。另外,+计数器+
字符串是元素的id
?如果你需要使用字符串连接,这会让你大吃一惊。当我在调用removeChild后返回时,它会提交我的表单(不应该),除此之外,removeChild
需要的是DOM元素,而不是ID(或任何计数器
是什么)@Damarawy:发生这种情况可能是因为整个removeChild
行抛出了一个错误@Damarawy:检查浏览器的控制台日志,您的removeChild()代码可能有错误。您在计数器周围的单引号似乎非常错误,应该会抛出错误。@FelixKling谢谢,我想我实际上是在向“removeChild”传递一个ID,而不是DOM元素。。您能把它作为一个答案,让我投赞成票吗?当我在调用removeChild后放置返回时,它会提交我的表单(不应该),removeChild
需要一个DOM元素,而不是ID(或任何计数器
是什么)@Damarawy:发生这种情况可能是因为整个removeChild
行抛出了一个错误@Damarawy:检查浏览器的控制台日志,您的removeChild()代码可能有错误。你的单引号在计数器s附近