Тема: HTA: GetElementsById
Сразу хочу договорится: Ни о какой кросс-браузерности речи не идет. Мы работаем с HTA, а значит речь только о Internet Explorer.
Итак, в IE очень удобно обращаться к элементу по его ID.
Для этого даже getElementById использовать не нужно. Тем более что document.getElementById('myId') вернет только первый элемент с указанным ID.
Функции getElementsById просто не существует. Да она и не нужна. В IE можно обратиться к нужному элементу с известным ID просто указав его индекс, например:
myId[6].style.color = 'red';И все хорошо, пока элементов с заданным ID больше одного. Если же элемент myId - единственный, то к нему уже нельзя обратиться как к массиву и приходится использовать
myId.style.color = 'red';Вставлять во все участки кода проверку на количество элементов с заданным ID мне показалось неудобным. Сочинил такую простенькую функцию:
function GetElementsById(id){
return (id[0]) ? id : [id];
}Теперь можно писать так:
GetElementsById(myId)[n].style.color = 'red';Код будет работоспособен как при нескольких элементах с указанным ID так и при единственном.
JS я люблю, но спецом в нем себя не считаю. Поэтому решил посоветоваться прежде чем вставлять это решение во все мои HTA проги.
Попутно хотел задать вопрос:
Я никогда не использую document.getElementById('myId'), но иногда (очень-очень редко) обращение напрямую к элементу по его ID почему то не срабатывает, тогда приходится применять getElementById.
Есть какие нибудь правила когда обязательно надо использовать getElementById или это просто глюки IE?
P.S. Можно, конечно, использовать самописную кросс-браузерную фукцию getElementsById (в инете ее многие приводят). Но перебирать все элементы подряд, а потом сверять их ID с заданным мне кажется уж чересчур ресурсоемким.

