2011-05-18 2 views
0

pendant que je crée dynamiquement la zone de texte je peux ajouter n'importe quel de la zone de texte pendant que je supprime seulement la dernière zone de texte a été supprimée après une exception jette.création dynamique de la zone de texte

<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 jette l'erreur: après la suppression d'une zone de texte comme EchoError: NOT_FOUND_ERR: DOM Exception 8

Répondre

1

afin que vous whant pour ajouter et supprimer des zones de texte. et la dernière zone de texte ajoutée doit être supprimée?

donc d'abord vous alreddy avez une zone de texte dans la sorcière dom sera colide avec votre nommant

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

est-ce un atemt à ajouter manualy qoutes? Becus thats pas partie de l'id de l'élément

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

juste donner le nom normaly

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

et vous n'avez pas à mess avec dom ids vous pouvez stocker éléments dom comme des objets normaux si quelque chose comme ça fonctionne très bien

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()); 
} 

la méthode pop supprime le dernier élément ajouté dans le ARRA y

+0

u Laissez l'identifiant bal.setAttribute ("id", "text" + textElements.push()); maintenant ça fonctionne bien. mais je veux savoir sur la raison de l'erreur se produisent dans mon code. tout simplement je veux savoir bug dans mon code. –

+0

tout d'abord cette ligne var bal = document.getElementById ("text1"); ne prend pas le dernier élément il obtient le même élément à chaque fois ... i asume ce code var a = "\" "; a + =" text "+ (i); a + =" \ ""; est un atemt pour générer le dernier id à utiliser comme ceci bal = document.getElementById (a) .... mais vous n'avez pas besoin des qoutes faire ce bal = document.getElementById ("texte" + i) .. puis le code travaux – megakorre

Questions connexes