Javascript-форум (https://javascript.ru/forum/)
-   Internet Explorer (https://javascript.ru/forum/css-html-internet-explorer/)
-   -   Адаптация кода (https://javascript.ru/forum/css-html-internet-explorer/4970-adaptaciya-koda.html)

StaREViL 03.09.2009 16:06

Адаптация кода
 
Смысл: поиск и вывод всех ID. Известно что id задаются как myidX, где X какое-то число.
Код таков:
<html>

<body>
<input type="text" id="myid2" value="a">
<input type="text" id="myid3" value="b">
<input type="text" id="myid4" value="c">
<script>
while(/<.*id="(myid.)".*>/g.exec(document.body.innerHTML)){
    var x=document.getElementById(RegExp.$1);
    alert(x.id);
}
</script>

</body>

</html>


Но работает это только в FF. В IE не работает. Ошибок при этом нет.
От try..catch толку нет.
Пожскажите как это "кросснуть" под IE.

Kolyaj 03.09.2009 16:54

IE кавычки убирает. Регулярка должна быть примерно такой /<.*id="?(myid.)"?.*>/g. А лучше вообще innerHTML в таком ключе не парсить.

StaREViL 03.09.2009 17:03

Цитата:

Сообщение от Kolyaj (Сообщение 29355)
IE кавычки убирает. Регулярка должна быть примерно такой /<.*id="?(myid.)"?.*>/g. А лучше вообще innerHTML в таком ключе не парсить.

О как. Спасибо, работает. Но показывает только последний найденый элемент...
innerHTML приходится использовать, так как по другому не знаю как получить все содержимое страницы:)

Kolyaj 03.09.2009 17:07

var elems = document.getElementsByTagName('input'); // если любой тег может быть, то *
for (var i = 0; i < elems.length; i++) {
    if (elems[i].id && /^myid\d+$/.test(elems[i].id))
        alert(elems[i].id);
}

StaREViL 03.09.2009 17:55

Цитата:

Сообщение от Kolyaj (Сообщение 29360)
var elems = document.getElementsByTagName('input'); // если любой тег может быть, то *
for (var i = 0; i < elems.length; i++) {
    if (elems[i].id && /^myid\d+$/.test(elems[i].id))
        alert(elems[i].id);
}

Да, спасибо еще раз. То что надо.


Часовой пояс GMT +3, время: 00:45.