2009-10-30 4 views
24

Я изменяю идентификатор HTML-кода div с помощью JavaScript. Следующий код работает нормально в Internet Explorer, но не в Firefox/2.0.0.20. Он работает в более поздних версиях Firefox.Как изменить идентификатор элемента HTML с JavaScript?

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

Может кто-нибудь сказать мне:

  1. Почему это не работает в FireFox.
  2. Как сделать эту работу в FireFox.

Чтобы уточнить, я меняю идентификатор элемента, чтобы ссылаться на другой стиль во внешней таблице стилей. Стиль применяется в IE, но не в FF.

+2

Должна ли работа найти в firefox - что заставляет вас думать, что это не так? – Greg

+1

Это работает для меня в Firefox, вы получаете ошибку JavaScript? Можете ли вы опубликовать больше примеров кода? –

+0

Загрузите Firebug и посмотрите, какая ошибка вызывается в окне консоли. –

ответ

33

Он работает в Firefox (включая 2.0.0.20). См http://jsbin.com/akili (добавить /edit к URL для редактирования):

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

Первый щелчок меняет id к "two", второй ошибки щелчка, потому что элемент с id="one" теперь не может быть найден!

Возможно, у вас есть другой элемент уже с id="two" (FYI you can't have more than one element with the same id).

+1

+1 Для того, чтобы загрузить пример – Seb

7

Это, кажется, работает для меня:

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

Ожидаемое поведение, чтобы изменить цвет слова «фрукты».

Возможно, ваш документ не был полностью загружен, когда вы вызвали рутину?

+0

См. Мои последние изменения. – Tesseract

3

Вы можете изменить id без использования getElementById

Пример:

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

Вы можете увидеть здесь: http://jsbin.com/elikaj/1/

Испытано с Mozilla Firefox 22 и Google Chrome 60,0

Смежные вопросы