使用JavaScript通过单击按钮删除div
我已经创建了一个表单,其中它会复制自身,但是我无法使“x”按钮根据需要删除它所表示的div 我将两个按钮从div中取出,如下所示:使用JavaScript通过单击按钮删除div,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我已经创建了一个表单,其中它会复制自身,但是我无法使“x”按钮根据需要删除它所表示的div 我将两个按钮从div中取出,如下所示: <button type="button" id="cross" class="buttonImgTop" onclick="remChild()"></button> <div id="ValuWrapper"> ...content comes here... </div> <button type="but
<button type="button" id="cross" class="buttonImgTop" onclick="remChild()"></button>
<div id="ValuWrapper"> ...content comes here... </div>
<button type="button" class="buttonImg" onclick="repeat()"></button>
…这里有内容。。。
每次单击“+”符号以在网站上添加更多表单时,“x”按钮和“div”都会被克隆和复制
以下是克隆表单和删除表单的代码:
<script>
var i = 0;
var original = document.getElementById('ValuWrapper');
var crossButton = document.getElementById('cross');
var n = 0;
function repeat() {
var clone = original.cloneNode(true);
var crossBut = crossButton.cloneNode(true);
clone.id = "ValuWrapper" + ++i;
crossBut.id = "cross" + i;
crossButton.parentNode.appendChild(crossBut);
original.parentNode.appendChild(clone);
// used for remChild() function
n = i;
}
function remChild(){
for(i = 0; i <= n; i +=1)
{
$("#cross"+[i]).click(function () {
$("#ValuWrapper"+[i]).slideUp(400, function () {
$("#ValuWrapper"+[i]).remove();
$(this).remove();
});
});
}
}
</script>
var i=0;
var original=document.getElementById('ValuWrapper');
var crossButton=document.getElementById('cross');
var n=0;
函数重复(){
var clone=original.cloneNode(true);
var crossBut=crossbuton.cloneNode(真);
clone.id=“ValuWrapper”++i;
crossut.id=“cross”+i;
crossButton.parentNode.appendChild(crossBut);
original.parentNode.appendChild(克隆);
//用于remChild()函数
n=i;
}
函数remChild(){
对于(i=0;i这就是我认为你想要的
我尽量不硬编码任何东西,但计数和删除兄弟姐妹
我还删除了所有内联事件处理程序
$(函数(){
var$original=$(“#ValuWrapper”),
$crossButton=$(“#cross”),
$content=$(“#content”);
$content.on(“单击“,”.cross”,函数(){
if($(this).is(#cross”))返回false;
var$cross=$(此项);
$(this).next().slideUp(400,函数(){
$(this.remove();
$cross.remove();
});
});
$(“#重复”)。在(“单击”,函数(){
$content.append($crossButton.clone(true.removeAttr(“id”));
$content.append(
$original.clone(真)
.hide()//如果滑动
.attr(“id”),$original.attr(“id”)+$content.find(“button.cross”).length)
.slideDown(“slow”)//不会滑动太多,因此如果不喜欢,请删除它
);
});
});
#内容{高度:100%}
X
…内容在此显示…
…内容在此显示…
添加
我认为这是您需要的。在单个html中添加了完整的代码。尚未使用任何css,但这是您正在寻找的一个工作示例。您可以根据需要更新副本内容
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
var i = 0;
var original;
var crossButton ;
var n = 0;
function repeat() {
var clone = original.cloneNode(true);
var crossBut = crossButton.cloneNode(true);
clone.id = "ValuWrapper" + ++i;
crossBut.id = "cross" + i;
$(crossBut).text("corss"+i);
crossButton.parentNode.appendChild(crossBut);
original.parentNode.appendChild(clone);
// used for remChild() function
n = i;
}
function remChild(obj){
$($(obj).next()).slideUp(400,function()
{
$(obj).next().remove();
$(obj).remove();
});
}
$(document).ready(function(){
original = document.getElementById('ValuWrapper');
crossButton = document.getElementById('cross');
$(".buttonImg").click(function(){
repeat();
});
$("body").on("click",".buttonImgTop",function(){
remChild(this);
});
});
</script>
<body>
<h2>My First JavaScript</h2>
<button type="button" id="cross" class="buttonImgTop" >remove</button>
<div id="ValuWrapper"> ...content comes here... </div>
<button type="button" class="buttonImg" >repeat</button>
</body>
</html>
var i=0;
原始变量;
var交叉按钮;
var n=0;
函数重复(){
var clone=original.cloneNode(true);
var crossBut=crossbuton.cloneNode(真);
clone.id=“ValuWrapper”++i;
crossut.id=“cross”+i;
$(交叉符号).text(“交叉符号”+i);
crossButton.parentNode.appendChild(crossBut);
original.parentNode.appendChild(克隆);
//用于remChild()函数
n=i;
}
功能remChild(obj){
$($(obj.next()).slideUp(400,函数())
{
$(obj).next().remove();
$(obj.remove();
});
}
$(文档).ready(函数(){
original=document.getElementById('ValuWrapper');
crossButton=document.getElementById('cross');
$(“.buttonImg”)。单击(函数(){
重复();
});
$(“body”)。在(“单击“,”.buttoningtop”,函数()上{
雷姆柴尔德(本);
});
});
我的第一个JavaScript
去除
…这里有内容。。。
重复
1.您需要搜索循环闭包。2.不要使用id。使用3.不要混合使用DOM和jQueryplease提供您的html@mplungjan为什么我们不能用“break”来代替呢?循环闭包在JavaScript中看起来非常混乱,因为我无法理解在函数中有一个函数然后调用该函数。但是,这会停止吗p一旦操作完成,循环一次?@amitwadhwani我在帖子中添加的代码仅被克隆/删除。没有使用其他代码。请澄清为什么需要整个HTML。是的,这正是我想要的!非常感谢!我只是想知道是否可以隐藏或不允许删除第一个div还有,为什么Div没有被命名为ValuWrapper1、ValuWrapper2等等。它似乎是从ValuWrapper到ValuWrapper13、ValuWrapper26等等。而我以前的代码是按顺序给它编号的。更新。我这里的代码显示了ValuWrapper、ValuWrapper1、2等等-您的内容中有更多的潜水-然后更改为content.find(“button.cross”)。更新后的代码不会删除,因为cross的id在整个页面中都是相同的,必须为其提供一个类似于ValuWrapper的唯一id。要解决此问题,我们需要添加与为ValuWrapper提供新id相同的代码行。当然,它会-我不使用div或button的id-您不需要添加任何东西-我在ValueWrapper中添加了一个ID,只是因为您似乎需要它来做一些事情。我认为我的上述解决方案也有按钮的顺序。我认为我的解决方案在使用jQuery和Domage时更加优雅和一致,学习您的编码方式对我来说是一个很好的学习。但我的逻辑不依赖于d的数量我认为这是一个很好的观点。你的观点?我只是数一数按钮来给出一个新的ID。据我所知,它甚至不需要。完全没有依赖性