在Javascript中添加和删除元素?

在Javascript中添加和删除元素?,javascript,html,Javascript,Html,我正试着为《使命召唤》中的mod菜单制作一个发电机。我希望人们能够添加或删除一个菜单。我正在尝试按顺序标识菜单,以便正确使用文本字段值。我这样做是为了,如果他们删除一个菜单,它会将所有其他菜单的id更改为一个更低的,按钮id相同,但我不知道如何更改onlick事件以删除正确的元素 更好的是,如果有更好的方法,我很想知道 <script type="text/javascript"> y = 1 function test2() { docume

我正试着为《使命召唤》中的mod菜单制作一个发电机。我希望人们能够添加或删除一个菜单。我正在尝试按顺序标识菜单,以便正确使用文本字段值。我这样做是为了,如果他们删除一个菜单,它会将所有其他菜单的id更改为一个更低的,按钮id相同,但我不知道如何更改onlick事件以删除正确的元素

更好的是,如果有更好的方法,我很想知道

<script type="text/javascript">
    y = 1
    function test2()
    {
        document.getElementById("test2").innerHTML += "<div id=\"child" + y + "\"><input type=\"text\" value=\"menu name\" \><input id=\"button" + y + "\" type=\"button\" value=\"remove?\" onclick=\"test3(" + y + ")\" /></div>";
        y++;
        alert(y);
    }
    function test3(x)
    {
        document.getElementById("test2").removeChild(document.getElementById("child" + x));

        for(var t = x+1;t < y;t++)
        {
            alert("t is " + t + ". And y is " + y);
            document.getElementById("button" + t).setAttribute("onclick" , "test3(t-1)");
            document.getElementById("button" + t).id = "button" + (t-1);
            document.getElementById("child" + t).id = "child" + (t-1);
        }
        y--;
    }

</script>
<input value="testing" type="button" onclick="test2()" />
<div id="test2" class="cfgcode"></div>

y=1
函数test2()
{
document.getElementById(“test2”).innerHTML+=“”;
y++;
警报(y);
}
功能测试3(x)
{
document.getElementById(“test2”).removeChild(document.getElementById(“child”+x));
对于(var t=x+1;t
我不担心在添加或删除一个元素后重新索引所有元素,这似乎是一种浪费。最好只编写一个更通用的函数,而不是将元素id硬编码到函数中

例如,您的第一个函数可以这样编写:

function genericFunction(el)
{
    var html = ''; // create any new html here
    el.innerHTML = html;
}
然后可以添加onclick处理程序,例如:

myDiv.onclick = function() { genericFunction(this) };

我也同意上面所有的评论,使用jQuery,它使任何与DOM交互的代码都变得更简单。

我建议大家看一看,这是一个广泛使用的Javascript库,它使这些任务和其他许多任务变得更容易。您为什么不试试这个库:?它被称为JQuery,使用javascript时,您将有一次不那么痛苦的经历:-)。是的,JQuery肯定是一条路要走。除此之外:当他第一次使用所有变量(
var y=1;
)时,将
var
放在所有变量之前,并使用适当的函数名,即不
test
,除非该函数实际在测试某个东西(即使在这种情况下,
testSomething
也更合适)2003调用,否则他们想要回它们的语法;)问题是:“我不知道如何更改onlick事件以删除正确的元素”。我提供了一种更好的方法来处理onclick事件,以便它始终知道正确的元素(通过传入
this
)。这怎么不是答案?嗯,好的。我将删除我的评论