JavaScript setAttribute не работает - PullRequest
       3

JavaScript setAttribute не работает

1 голос
/ 23 августа 2011

Я пытался использовать setAttribute, чтобы изменить имя тега выбора с oldName на newName, однако, когда я загружаю страницу и затем смотрю на источник, oldName остается.В конечном итоге я хотел добавить атрибут "onchange", "function ();"но я даже не могу заставить JS изменить имя тега.Любая помощь будет оценена.Заранее спасибо.Я проверял это на Mac OS X: Chrome, FF и Safari.

<html>
<head>
</head>
<body>
        <select name="oldName">
        <option value="0">Essay 1</option>
        <option value="1">Essay 2</option>
        <option value="2">Essay 3</option>
        </select>
<script type="text/javascript">
document.getElementsByTagName("select").item(0).setAttribute("name","newName");
</script>
</body>
</html>

Ответы [ 3 ]

4 голосов
/ 23 августа 2011

Ваш код работает, имя меняется.Вы просто не увидите изменения имени при просмотре источника.Вместо этого посмотрите на сгенерированный источник в инструменте разработки.(Попробуйте F12 в Chrome).

Просмотр исходного кода показывает только источник, который был впервые загружен с сервера.Используя инструмент разработки, вы можете увидеть изменения, внесенные в DOM после загрузки страницы.

0 голосов
/ 23 августа 2011

Когда вы делаете «просмотр источника», вы не смотрите HTML-код страницы, поскольку он существует перед вами - браузер извлекает копию страницы специально, чтобы показать вам источник. При этом он не интерпретирует javascript - поэтому любые изменения в документе, которые вы делаете с помощью javascript, не будут отражены в окне «Просмотр источника».

Чтобы просмотреть изменения в DOM live , вам необходимо использовать инструмент разработки, например Firebug ( link ). Разумеется, расширение в Firefox означает неудачу в Internet Explorer, поэтому разработчики часто ориентируются на Firefox для разработки и беспокоятся об Internet Explorer после того, как все достаточно хорошо работает и работает.

Есть альтернативные инструменты для Firebug в IE (например, Firebug Lite), но ни один из них не приблизился к функциональности и утилитам.

0 голосов
/ 23 августа 2011

Почему вы не используете класс вместо этого?Как это:

<script type="text/javascript">
$(function(){
    $('.example').attr('name','new');
});
</script>


<select class="example" name="oldName">
<option value="0">Essay 1</option>
<option value="1">Essay 2</option>
<option value="2">Essay 3</option>
</select>
...