На документе IE.getElementsByName не будет работать
Я использую этот код:
<div name="1234">
<img src="pic.gif" height="70" width="100" onMouseOver="clear('1234')">
</div>
и:
function clear(element_name){
document.getElementsByName(element_name)[0].innerHTML="";
}
он работает в Firefox и Opera, но не работает в IE 6.0 или IE 8.0, и, вероятно, даже не в новых IE.
Что делать?
2 ответов
Ну, проблема в следующем: IE понимает документ.getElementsByName(...)[0] в качестве документа.метода getElementById(...). Поэтому, если вы также определите id для своего элемента, документ метода.getElementsByName(имя_элемента)[0].innerHTML= "" будет удивительно также работать в IE!
но поскольку вам все равно нужно определить id из-за IE, и поскольку id всегда должен начинаться с символа, вы должны использовать:
<div id="a234">
<img src="pic.gif" height="70" width="100" onMouseOver="clear('a234')">
</div>
и этого команды:
function clear(element_id){
document.getElementById(element_id).innerHTML="";
}
еще больше, документ.getElementsByName(...)[0] медленнее в Firefox: http://www.uize.com/tests/performance/getElementById-vs-getElementsByName.html
таким образом, id определенно выигрывает гонку.
обновление:
также важен тот факт,что мы можем адресовать каждый идентификатор #a234 {...} в в CSS. Таким образом, мы можем определить собственный стиль для каждого id, и это делает id еще более мощным.
используя getElementsByName чтобы получить элемент DOM, где имя атрибут не является частью спецификации W3C (например, в вопросе имя не существует для элемента DIV), т. е. не получает эти элементы. FF делает это.
Просто чтобы уточнить:атрибут expando или более известный как пользовательский атрибут это то, что я говорю об атрибутах, которые не являются частью спецификации W3C.
читать: getElementsByName в IE7
Читайте:http://msdn.microsoft.com/en-us/library/ms536438 (VS.85).aspx
ну и в заключение:
Использовать getElementsByName при попытке получить "Формы Контроля" (ввод, выбор, textarea), потому что у них есть имя как атрибут согласно спецификации.
Если элементы не являются элементами управления формы, используйте getElementById вместо этого.