Impostazione dell’attributo id dynamicmente distinto utilizzando javascript per l’elemento input

Sto affrontando un problema nell’impostazione di ID distinti per caselle di input aggiunte dynamicmente in una tabella. Il problema è:

Sto inserendo nuove righe quando l’utente fa clic su “Aggiungi nuova riga”. Ora devo impostare un ID distinto per la casella di input. Ho preso una variabile statica e aumentando il suo valore ogni volta che l’utente fa clic su Aggiungi nuovo pulsante di riga. Quindi aggiungo il suo valore al valore id, diciamo temp (cioè id sarà temp1 , temp2 e così via). Ho preso una variabile xyz come var xyz = "temp" + i (dove sono il contatore) e ora devo assegnare xyz setattribute usando setattribute . Ma dato che i valori in setattribute possono essere solo letterali, come posso usare una variabile al posto del valore?

Se avete altri metodi, per favore fatemelo sapere.

Può essere una variabile che contiene anche una stringa.

 var fooId = "foo"; for (var i = 0; i <= 2; i++) { document.getElementsByTagName('div')[i].setAttribute('id', fooId + (i + 1)); } 

DEMO live

setAttribute consente di utilizzare le variabili come parametro del valore.

per esempio:

 var ele = document.createElement('div') var id = 'temp1' ele.setAttribute('id', id) 

risulterebbe in:

 

element.setAttribute("id", xyz); Dove l’elemento è il tuo input.

Prima di tutto setattribute è una proprietà non definita di un elemento a causa della sensibilità al maiuscolo / minuscolo mentre setAttribute , ovviamente, è disponibile.

In secondo luogo, non è assolutamente necessario utilizzare setAttribute . Puoi semplicemente modificare la proprietà id per ottenere lo stesso effetto:

 var el = document.createElement('div'), // your element staticPart = 'myUniqId', // your static part of a unique id i = 0; // your uniqueness el.id = staticPart + i; // assign unique id to the element // el.setAttribute('id', staticPart + i); // does the same, but more verbose // Let's check if it worked: el.getAttribute('id'); // "myUniqId0" el.id; // "myUniqId0" 

Terzo, dove l’hai visto?

i valori in setattribute possono essere solo letterali

La specifica dice che setAttribute accetta due parametri, name e value di tipo DOMstring . Puoi passarlo qualsiasi valore tu voglia. Ricorda che sarà convertito in stringa:

 el.id = {a: 'b'}; el.id; // "[object Object]" 

Vedi http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-F68F082 e https://developer.mozilla.org/en-US/docs/DOM/element.setAttribute

 for(;i<7;i++) {document.getElementById("test").innerHTML +='
' }