一次删除多个Div元素——JavaScript

一次删除多个Div元素——JavaScript,javascript,html,removechild,Javascript,Html,Removechild,我没有发现任何关于我的奇怪问题的问题。基本上,我已经建立了一个表单,用于输入用户的电话号码和分机号码。我制作了一个“添加”按钮,以便可以向表单中添加更多电话/分机。我已经在表单和SQL代码中很好地完成了添加工作。问题是删除表单和SQL代码。您可以在代码中看到,每个新条目都有自己的“Remove”链接,该链接保存该特定条目的DIV信息。然后它转到一个“remove”函数,它把这个函数去掉。它对表单很好,但对SQL代码没有任何作用。我已经为SQL代码创建了类似的东西,所以我有一个函数可以删除它。为了

我没有发现任何关于我的奇怪问题的问题。基本上,我已经建立了一个表单,用于输入用户的电话号码和分机号码。我制作了一个“添加”按钮,以便可以向表单中添加更多电话/分机。我已经在表单和SQL代码中很好地完成了添加工作。问题是删除表单和SQL代码。您可以在代码中看到,每个新条目都有自己的“Remove”链接,该链接保存该特定条目的DIV信息。然后它转到一个“remove”函数,它把这个函数去掉。它对表单很好,但对SQL代码没有任何作用。我已经为SQL代码创建了类似的东西,所以我有一个函数可以删除它。为了进行测试,我输入了与表单相同的“Remove”href,如果我单击SQL部分的链接,它会将其删除。 因此,我试图找到一种方法,单击表单部分上的“删除”链接,让它删除特定的表单和相应的SQL代码。 我曾想过尝试从表单DIV中获取一个与SQL部分的DIV名称匹配的名称,但我似乎无法实现这一点

    ////
    //-------------Add Phone Form----------------
    ////

    function addElement() { 

    var ni = document.getElementById('phoneDiv'); 
    var numi = document.getElementById('theValue'); 
    var num = (document.getElementById('theValue').value -1 + 2); 
    numi.value = num; 
    var newdiv = document.createElement('div'); 
    var divIdName = 'phoneDiv'+num+''; 
    var sqlDivIdName = 'SQL'+divIdName+'';
    newdiv.setAttribute('id',divIdName); 
    newdiv.innerHTML = '<input type=hidden id=' + num + ' name='+sqlDivIdName+' value='        + num + '><a href="javascript:remove('+divIdName+')">Remove</a> <tr><td>Phone Number:</td>  <td> <input type="text" name="phone' + num + '" maxlength="10"> </td></tr> <tr>  <td>Extension:</td><td> <input type="text" name="ext' + num +'" maxlength="5" value="00000">'; 
    ni.appendChild(newdiv); 

    javascript:addElement2(); 
    } 

    ////
    //-------------Add Phone SQL----------------
    ////

    function addElement2() {

var ni = document.getElementById('SQLphoneDiv'); 
    var numi = document.getElementById('theValue2'); 
    var num = (document.getElementById('theValue2').value -1 + 2); 
    numi.value = num; 
    var newdiv = document.createElement('div'); 
    var divIdName = 'SQLphoneDiv'+num+''; 
    newdiv.setAttribute('id',divIdName); 
    newdiv.innerHTML = '<input type=hidden id=' +num+ ' value=' +num+ '><a         href="javascript:removeSQL('+divIdName+')">Remove</a> $insert_phone = "INSERT INTO phone (Phone_Cust_ID,Phone_Numb,Ext) VALUES (\'$cust_ID[0]\',\'".$_POST[\'phone' +num+ '\']."\',\'".$_POST[\'ext' +num+ '\']."\')"; $add_phone = mysql_query($insert_phone);'; 
    ni.appendChild(newdiv); 
    }


    ////
    //-------------Remove Phone Form----------------
    ////

    function remove(xy) {
    var ni = document.getElementById('phoneDiv'); 


    ni.removeChild(xy);

    }


    ////
    //-------------Remove Phone SQL----------------
    ////

    function removeSQL(yz) {
    var ni = document.getElementById('SQLphoneDiv'); 
    ni.removeChild(yz);

    }
////
//-------------添加电话表单----------------
////
函数addElement(){
var ni=document.getElementById('phoneDiv');
var numi=document.getElementById('theValue');
var num=(document.getElementById('theValue')。value-1+2);
numi.value=num;
var newdiv=document.createElement('div');
var divIdName='phoneDiv'+num+'';
var sqlDivIdName='SQL'+divIdName+'';
newdiv.setAttribute('id',divIdName);
newdiv.innerHTML='电话号码:分机:';
ni.儿童基金会(新分部);
javascript:addlement2();
} 
////
//-------------添加电话SQL----------------
////
函数加法器2(){
var ni=document.getElementById('SQLphoneDiv');
var numi=document.getElementById('theValue2');
var num=(document.getElementById('theValue2')。value-1+2);
numi.value=num;
var newdiv=document.createElement('div');
var divIdName='SQLphoneDiv'+num+'';
newdiv.setAttribute('id',divIdName);
newdiv.innerHTML='$insert\u phone=“插入电话(电话用户ID,电话号码,分机)值(\'$Cust\u ID[0]\',\'.”“$\u POST[\'phone'+num+'\']”.“\',\'”$\u POST[\'Ext'+num+'\']。“\'”;$add\u phone=mysql\u查询($insert\u phone);”;
ni.儿童基金会(新分部);
}
////
//-------------删除电话表单----------------
////
功能移除(xy){
var ni=document.getElementById('phoneDiv');
去核细胞(xy);
}
////
//-------------删除电话SQL----------------
////
函数removeSQL(yz){
var ni=document.getElementById('SQLphoneDiv');
ni.removeChild(yz);
}
我尝试只使用一个remove函数而不是两个,或者让第一个remove函数触发第二个remove函数,但我认为问题在于我无法获取我试图删除的子对象的SQL部分的+divName+信息

我对JavaScript非常陌生,所以我相信jQuery有一个非常简单的方法来实现这一点,但是jQuery现在让我感到困惑,因为我仍然试图仅仅掌握JavaScript中的大多数概念。 谢谢你给我的建议

另外,我知道SQL不是真的正确,但我现在不担心这一点。一旦我让这个函数起作用,我就可以清理一切


Nathan

通过在
addElement
函数中执行以下操作,可以将SQLphoneDiv元素id存储在phoneDiv元素中

newdiv.sqlDivId = sqlDivIdName
然后在
删除功能中执行以下操作

var sqlDiv = document.getElementById(xy.sqlDivId);
var sqlNi = document.getElementById('SQLphoneDiv');
sqlNi.removeChild(sqlDiv);

我知道您正在寻找一个纯JavaScript解决方案,但我想我会发布一个jQuery解决方案仅供参考。无论如何,在使用jQuery时,最好将函数加载到文档就绪函数中。。。就像这样

$(document).ready(function(){


});
这基本上和它读到的一样。在运行函数之前,它会等待文档完全加载

从那里你可以做一个点击功能,就像这样

$(document).ready(function(){


});
示例HTML

<a href="" id="mylink">My Link</a>
然后,要删除链接,可以使用
.remove()
。。。所以所有这些看起来都是这样的

$(document).ready(function(){

$('#mylink').click(function(){
   $('#mylink').remove();
});

});
要使用一次单击删除多个ID,您可以执行以下操作

$('#mylink, #mylink2, #mydiv').remove();

我怀疑这是你想要的答案。然而,当您决定开始处理jQuery时,您将学会喜欢只需要很少的代码就可以完成大量的代码。

这么久了,我不想看到。是否要按id删除元素? 这个功能可以工作

function removeById(id) {
    var toremoved = document.getElementbyId(id);
    toremoved.parentNode.removeChild(toremoved);
}

谢谢你,布兰特!!这正是我所需要的!我知道我正在努力使它发挥作用。使用JS我还需要学习更多。非常感谢!你说得对,这不是我想要的答案,但我真的很感激这个答案。为了更好地理解jQuery如何与标准JavaScript一起工作,我能读到的任何东西都非常有用。谢谢你,克里斯!