Не работает getElementsByName
Изучаю JavaScript. Прочла статью "Поиск элементов в DOM" и решила проверить на практике.
Допустим надо подсчитать всех потомков элемента FORM
var ms = document.getElementsByName('formname')[0].getElementsByTagName('*');
alert(ms.length);
в IE выдает 20, а в FF - 0. Подскажите пожалуйста, может я чего-то не так поняла. |
HTML покажите.
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<meta http-equiv="Pragma" content="no-cache"/>
<script type="text/javascript" src="/scripts.js"></script>
<script type="text/javascript" src="/jquery-1.3.1.js"></script>
<title>титул</title>
</head>
<body>
<table>
<tr><td>
<FORM name="filterform">
<SELECT size="1" name="grpshow" id="grpshow" onChange="lFilterChange();">
<OPTION value="1" selected>текст1</OPTION>
<OPTION value="2">текст2</OPTION>
<OPTION value="3">текст3</OPTION>
<OPTION value="4">текст4</OPTION>
<OPTION value="5">текст5</OPTION>
<OPTION value="6">текст6</OPTION>
<OPTION value="7">текст7</OPTION>
<OPTION value="8">текст8</OPTION>
<OPTION value="9">текст9</OPTION>
<OPTION value="10">текст10</OPTION>
<OPTION value="11">текст11</OPTION>
</SELECT>
</FORM>
</td></tr></table>
</body>
</html>
scripts.js:
function lFilterChange()
{
var ms = document.getElementsByName('filterform')[0].getElementsByTagName('*');
alert(ms.length);
}
|
Всё вместе желательно, чтобы ошибку воспроизвести.
|
подправила
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<meta http-equiv="Pragma" content="no-cache"/>
<script type="text/javascript">
function lFilterChange()
{
var ms = document.getElementsByName('filterform')[0].getElementsByTagName('*');
alert(ms.length);
}
</script>
<title>титул</title>
</head>
<body>
<table>
<tr><td>
<FORM name="filterform">
<SELECT size="1" name="grpshow" id="grpshow" onChange="lFilterChange();">
<OPTION value="1" selected>текст1</OPTION>
<OPTION value="2">текст2</OPTION>
<OPTION value="3">текст3</OPTION>
<OPTION value="4">текст4</OPTION>
<OPTION value="5">текст5</OPTION>
<OPTION value="6">текст6</OPTION>
<OPTION value="7">текст7</OPTION>
<OPTION value="8">текст8</OPTION>
<OPTION value="9">текст9</OPTION>
<OPTION value="10">текст10</OPTION>
<OPTION value="11">текст11</OPTION>
</SELECT>
</FORM>
</td></tr></table>
</body>
</html>
Всё работает. |
спасибо, значит у меня где-то в другом месте ошибка, буду искать
|
Нашла ошибку. Так работает:
<table><tr><td><FORM></FORM></td></tr></table> а так нет: <table><tr><FORM><td></td></FORM></tr></table> |
Ничего себе ошибка, это не ошибка а непойми что, нельзя так делать. Нужно либо таблицу вставлять в форму либо форму вставлять в ячейку.
|
Та я догадываюсь, что неправильно делаю, но что делать если надо :)
В общем смысл какой - форма "растянута" на строку в таблице. Таблица длинная. В ячейках находятся элементы этой формы. Все очень красивенько выглядит (с точки зрения пользователя) и некоторых браузерах работает. Результат - строки в таблице можно редактировать не отходя от кассы. Если у вас есть лучшие идеи по этому поводу, с удовольствием выслушаю. Можно наверное вообще убрать форму, но при этом оставить ее элементы... подумаю еще в общем |
| Часовой пояс GMT +3, время: 22:34. |