2009-10-30 16 views
24

Modyfikuję identyfikator strony klienta HTML div z JavaScript. Poniższy kod działa poprawnie w Internet Explorerze, ale nie w Firefoksie/2.0.0.20. Działa w nowszych wersjach Firefoksa.Jak zmienić identyfikator elementu HTML za pomocą JavaScript?

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

ktoś może mi powiedzieć:

  1. Dlaczego to nie działa w Firefoksie.
  2. Jak to działa w FireFox.

Aby wyjaśnić, zmieniam identyfikator elementu, aby odwoływał się do innego stylu w zewnętrznym arkuszu stylów. Styl jest stosowany w IE, ale nie w FF.

+2

Czy praca powinna znajdować się w firefoxie - co sprawia, że ​​myślisz, że tak nie jest? – Greg

+1

Działa to dla mnie w Firefoksie, pojawia się błąd JavaScript? Czy możesz dodać więcej przykładów kodu? –

+0

Pobierz Firebug i zobacz, jaki błąd został zgłoszony w oknie konsoli. –

Odpowiedz

33

Działa w przeglądarce Firefox (, w tym 2.0.0.20). Zobacz http://jsbin.com/akili (dodaj /edit do adresu URL do edycji):

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

Pierwsze kliknięcie zmienia id do "two", drugi błędy kliknięcia, ponieważ element z id="one" teraz nie można znaleźć!

Być może masz już inny element już z id="two" (FYI you can't have more than one element with the same id).

+1

+1 Do przesłania przykładu – Seb

7

To wydaje się działać dla mnie:

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

Oczekiwane zachowanie jest, aby zmienić kolor słowa „owoc”.

Być może Twój dokument nie został w pełni załadowany po wywołaniu procedury?

+0

Zobacz moją ostatnią zmianę. – Tesseract

3

Można zmodyfikować id bez konieczności korzystania getElementById

Przykład:

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

Można go zobaczyć tutaj: http://jsbin.com/elikaj/1/

testowane z Firefoksa 22 i Google Chrome 60.0

Powiązane problemy