2009-10-30 13 views
24

Sto modificando l'ID di un lato client HTML div con JavaScript. Il seguente codice funziona correttamente in Internet Explorer ma non in Firefox/2.0.0.20. Funziona nelle versioni più recenti di Firefox.Come cambio l'ID di un elemento HTML con JavaScript?

document.getElementById('one').id = 'two'; 

qualcuno può dirmi:

  1. Perché questo non funziona in FireFox.
  2. Come eseguire questo lavoro in FireFox.

Per chiarire, sto modificando l'ID elemento per fare riferimento a uno stile diverso in un foglio di stile esterno. Lo stile è applicato in IE ma non in FF.

+2

Dovrebbe trovare lavoro in firefox - cosa ti fa pensare che non lo sia? – Greg

+1

Questo funziona per me in Firefox, stai ricevendo un errore JavaScript? Puoi pubblicare altri esempi di codice? –

+0

Scarica Firebug e dai un'occhiata per vedere quale errore viene generato nella finestra della console –

risposta

33

Funziona in Firefox (compreso 2.0.0.20). Vedere http://jsbin.com/akili (aggiungere /edit all'URL per modificare):

<p id="one">One</p> 
<a href="#" onclick="document.getElementById('one').id = 'two'; return false">Link2</a> 

Il primo clic cambia le id ai "two", il secondo errori click perché l'elemento con id="one" ora non può essere trovato!

forse avete un altro elemento già con id="two" (FYI you can't have more than one element with the same id).

+1

+1 Per caricare un esempio – Seb

7

che sembra funzionare per me:

<html> 
<head><style> 
#monkey {color:blue} 
#ape {color:purple} 
</style></head> 
<body> 
<span id="monkey" onclick="changeid()"> 
fruit 
</span> 
<script> 
function changeid() 
{ 
var e = document.getElementById("monkey"); 
e.id = "ape"; 
} 
</script> 
</body> 
</html> 

Il comportamento previsto è di cambiare il colore della parola "frutto".

Forse il documento non è stato caricato completamente quando hai chiamato la routine?

+0

Vedere la mia modifica più recente. – Tesseract

3

è possibile modificare il id senza dover utilizzare getElementById

Esempio:

<div id = 'One' onclick = "One.id = 'Two'; return false;">One</div> 

Potete vedere qui: http://jsbin.com/elikaj/1/

Testato con Mozilla Firefox 22 e Google Chrome 60.0

Problemi correlati