Как изменить идентификатор элемента HTML с помощью JavaScript? - PullRequest
30 голосов
/ 30 октября 2009

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

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

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

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

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

Ответы [ 3 ]

43 голосов
/ 30 октября 2009

Работает в 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" (К вашему сведению вы не можете иметь более одного элемента с таким же id).

9 голосов
/ 30 октября 2009

Мне кажется, это работает:

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

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

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

5 голосов
/ 16 июня 2013

Вы можете изменить 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...