一次删除多个Div元素 - JavaScript

时间:2012-04-06 18:53:06

标签: javascript html removechild

我没有找到任何具体问题,我有一个奇怪的问题。基本上我已经设置了一个用于输入用户电话号码和分机号码的表单。我已经添加了一个“添加”按钮,因此我可以在表单中添加更多电话/扩展名。我已经在表单和SQL代码中添加了正常工作。问题是删除表单和SQL代码。您可以在代码中看到每个新条目都有自己的“删除”链接,该链接包含该特定条目的DIV信息。它转到了“删除”功能,将其取出。它适用于表单,但它不会对SQL代码执行任何操作。我已经为SQL代码创建了类似的东西,所以我有一个将删除它的函数。并且只是为了测试我放入与表单相同的“删除”href,如果我单击SQL部分的链接,它会删除它。 所以我试图找到一种方法来单击表单部分上的Remove链接,并让它取出该特定表单和相应的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);

    }

我试过只使用一个删除函数而不是两个,或者使第一个删除函数触发第二个,但我认为问题是我无法获取SQL部分的+ divName +信息孩子,我想删除。

我对JavaScript很陌生,所以我确信jQuery有一个非常简单的方法可以做到这一点,但jQuery现在让我感到困惑,因为我仍然只是试图用JavaScript来掌握大部分概念。 感谢您提供的任何提示。

另外,我知道SQL不是很正确,但我现在并不担心。一旦我使用此功能,我就可以清理所有内容。

3 个答案:

答案 0 :(得分:0)

您可以在addElement函数

中执行以下操作,将SQLphoneDiv元素ID存储在phoneDiv元素中
newdiv.sqlDivId = sqlDivIdName

然后在remove函数中执行

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

答案 1 :(得分:0)

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

$(document).ready(function(){


});

这基本上是它所读取的内容。它在运行函数之前等待文档完全加载。

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

示例HTML

<a href="" id="mylink">My Link</a>

jQuery

 $('#mylink').click(function(){

    });

然后删除您可以使用的链接.remove() ...所以一起看起来就像这样......

$(document).ready(function(){

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

});

要通过一次点击删除多个IDS,您就可以执行此操作...

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

我怀疑这是你正在寻找的答案。但是,当您决定开始处理jQuery时,您将学会喜欢用于获取大量代码所需的代码。

答案 2 :(得分:0)

这么久,我不想看到。你想通过id删除元素吗? 这个功能可以工作。

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