2009-10-30 15 views
24

Estoy modificando el ID de un elemento de cliente de elemento HTML div con JavaScript. El siguiente código funciona bien en Internet Explorer, pero no en Firefox/2.0.0.20. Funciona en versiones más recientes de Firefox.¿Cómo cambio el ID de un elemento HTML con JavaScript?

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

¿Puede alguien decirme:

  1. ¿Por qué esto no funciona en Firefox.
  2. Cómo hacer que esto funcione en FireFox.

Para aclarar, estoy cambiando el ID del elemento para hacer referencia a un estilo diferente en una hoja de estilos externa. El estilo se aplica en IE pero no en FF.

+2

¿Debería encontrar trabajo en Firefox? ¿Qué te hace pensar que no es así? – Greg

+1

Esto funciona para mí en Firefox, ¿está recibiendo un error de JavaScript? ¿Puedes publicar más ejemplos de código? –

+0

Descargar Firebug y echar un vistazo para ver qué error se arroja en la ventana de la consola –

Respuesta

33

Funciona en Firefox (incluyendo 2.0.0.20). Ver http://jsbin.com/akili (ADD /edit a la URL para editar):

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

El primer clic cambia las id a "two", el segundo clic errores porque el elemento con id="one" ahora no se puede encontrar!

Tal vez usted tiene otro elemento que ya con id="two" (FYI you can't have more than one element with the same id).

+1

+1 Para cargar un ejemplo – Seb

7

que parece funcionar para mí:

<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> 

El comportamiento esperado es cambiar el color de la palabra "fruto".

¿Quizás su documento no se cargó completamente cuando llamó a la rutina?

+0

Consulte mi edición más reciente. – Tesseract

3

se puede modificar el id sin tener que utilizar getElementById

Ejemplo:

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

Se puede ver aquí: http://jsbin.com/elikaj/1/

Probado con Mozilla Firefox 22 y Google Chrome 60.0

Cuestiones relacionadas