0

我使用 javascript 将文本字段动态添加到 div

function moreLink(){
//gco is global, starts from 1, limit of textfields added is 10

if (gco!=10){
    var newLinkb=[];

        document.getElementById("extraLink").innerHTML+="<br>";
    newLinkb[gco]= document.createElement('input');
    newLinkb[gco].setAttribute('type','text');
    newLinkb[gco].setAttribute('id',gco);        
    document.getElementById("extraLink").appendChild(newLinkb[gco]);            

    gco++;

        }

else{ alert ('sorry, cannot add more, limit is 10');
      }

}

所以,当我点击右键时,调用moreLink添加新文本字段输入类型的函数。

问题是,如果我在第一个文本字段中写一些内容并点击按钮,则会出现第二个文本字段,但第一个文本字段(值)中的文本消失了。

我该如何解决?

谢谢

4

2 回答 2

3
document.getElementById("extraLink").innerHTML+="<br>";

这确实对 DOM 进行了字符串化(序列化)#extraLink,将字符串附加到它,然后再次解析它。DOM 中的所有值(输入、自定义属性、事件处理程序)都将丢失。相反,使用正确的 DOM 方法,避免innerHTML

document.getElementById("extraLink").appendChild(document.createElement("br"));
于 2013-10-15T21:39:44.120 回答
0

如果您appendChild在 DIV 或其他元素上运行,它会成为其 innerHTML 的一部分,但该值不会。

尝试:

document.getElementById("extraLink").appendChild(document.createElement('br'));
于 2013-10-15T21:37:48.097 回答