2011-05-18 105 views
0

雖然我動態創建文本框我可以添加任何沒有 的文本框,而我只刪除最後一個文本框被刪除後它 拋出異常。動態創建文本框

<html> 
    <head>My page </html> 
    <body> 
     <div id="firstdiv"> 
     <input type="text" id="text" id="text1" value=""/> 
     <input type="button" id="butt" name="it's okay" value="+" onclick="text_add()"/> 
     <input type="button" id="butt1" name="it's okay" value="-" nclick="text_remove()"/> 
     </div> 
    </body> 
<script type="text/javascript"> 
var i=0; 
function text_add() 
{ 
    ++i; 
    var bal=document.createElement("input") 
     bal.setAttribute("type","text"); 
     bal.setAttribute("id","text"+i); 
     bal.setAttribute("name","bala"); 
     firstdiv.appendChild(bal); 

} 
function text_remove() 
{ 
try{ 
    var a="\""; 
    a+="text"+(i); 
    a+="\""; 
    alert(a); 
    var bal=document.getElementById(a); 
    firstdiv.removeChild(bal); 
    --i; 
}catch(e) 
    { 
    alert("Echo"+e); 
    } 
} 
</script> 
</html> 

chorme拋出錯誤:NOT_FOUND_ERR:刪除一個文本框狀 EchoError後DOM異常8

回答

1

所以你whant添加和刪除文本框。 和最新的文本框添加shuld被刪除?

所以首先你alreddy有在DOM女巫一個文本框將與您 命名

<input type="text" id="text" id="text1" value=""/> 

這是一個atemt到manualy添加qoutes colide? becus那不是元素的ID 的一部分

var a="\""; 
a+="text"+(i); 
a+="\""; 

只是給它取名normaly

var bal = document.getElementById("text" + i); 

和你沒有惹DOM IDS可以存儲 DOM元素作爲普通物體周圍所以 像這樣工作正常

var textElements = []; 
var firstdiv = document.getElementById("firstdiv"); 
function text_add() { 
    var bal = document.createElement("input"); 
    bal.setAttribute("type","text"); 
    bal.setAttribute("name","bala"); 
    firstdiv.appendChild(bal); 
    textElements.push(bal); 
} 
function text_remove() { 
    firstdiv.removeChild(textElements.pop()); 
} 

pop方法在ARRA刪除最後添加的項目y

+0

u leave id bal.setAttribute(「id」,「text」+ textElements.push());現在它工作正常。但我想知道在我的代碼中發生錯誤的原因。只是我想知道我的代碼中的錯誤。 – 2011-05-18 13:29:28

+0

首先這行var bal = document.getElementById(「text1」);我沒有考慮到最後一個元素,它每次都得到相同的元素...我假設這個代碼var a =「\」「; a + =」text「+(i); a + =」\「」;是一個atemt生成最後一個id使用像這樣bal = document.getElementById(a)....但是你不需要qoutes youst做這個bal = document.getElementById(「text」+ i)..然後代碼作品 – megakorre 2011-05-18 13:46:49