Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не работает getElementsByName (https://javascript.ru/forum/misc/7526-ne-rabotaet-getelementsbyname.html)

SunYang 06.02.2010 19:27

Не работает getElementsByName
 
Вот это записывает в ячейки undefined вместо введенного в инпуты текста:
<script>
function month() {
var x = document.getElementsByName("month").value
document.getElementById("a3").innerHTML = x
}
function year() {
var y = document.getElementsByName("year").value
document.getElementById("b3").innerHTML = y
}

</script>

<table width="400" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100">Ячейка 1</td>
    <td width="200"><input type="text" name="month"  /></td>
    <td width="100"><input type="button" value="Ввести" onclick="month()" /></td>
  </tr>
  <tr>
    <td>Ячейка 2</td>
    <td><input type="text" name="year" value=""/></td>
    <td><input type="button" value="Ввести" onclick="year()" /></td>
  </tr>
</table>
<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr>
<td align="center" id="a3">Data1</td>
<td align="center" id="b3">Data2</td>
</tr>
</table>

В чем косяк?)

Octane 06.02.2010 19:29

getElementsByName
разве из названия метода не понятно, что он возвращает?

SunYang 06.02.2010 19:30

не понял....

Riim 06.02.2010 19:44

Elements - элементы .

JsLoveR 06.02.2010 23:13

SunYang,
Имеется ввиду, что getElementsByName возвращает имена элементов, а не их value, просто создай форму с инпутами, дай им имена, и передавай их value.

Octane 06.02.2010 23:31

Цитата:

Сообщение от JsLoveR
Имеется ввиду, что getElementsByName возвращает имена элементов,

чо?

JsLoveR 07.02.2010 00:05

Этот метод принимает в качестве аргумента строку, указывающую имя (т.е. значение атрибута name) соответствующего элемента.

PeaceCoder 07.02.2010 00:06

Цитата:

Сообщение от JsLoveR
Имеется ввиду, что getElementsByName возвращает имена элементов,

Не имена, а сами элементы по атрибуту name.

subzey 07.02.2010 00:21

Цитата:

Сообщение от PeaceCoder
…по атрибуту name.

…и id, в особо добрых браузерах.

PeaceCoder 07.02.2010 00:26

Цитата:

Сообщение от subzey
…и id, в особо добрых браузерах.

getElementById тоже вроде по атрибуту name может выдать или я путаю?

subzey 07.02.2010 02:51

PeaceCoder,
к сожалению, Вы ничего не путаете. В Internet Explorer.

subzey 07.02.2010 03:12

Не менее интересные вещи происходят и с document.getElementsByTagName:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
		<title>title</title>
		<style type="text/css">img {border: dashed red 1px;width: 10px;height: 10px;display: block;margin: 10px}</style>
	</head>
	<body>
		<script>
			document.body.appendChild(document.createElement("img"));
			document.body.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml","html:img"));
			document.body.appendChild(document.createElementNS("http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd","html:img"));
		</script>
		<script>
			alert(document.getElementsByTagName("img").length);
			alert(document.getElementsByTagNameNS("*", "img").length);
		</script>
		
	</body>
</html>

IE6: честно показывает одну картинку, сообщает в первом алерте «1», второй даже не показывает.

Fx: показывает три картинки, говорит сначала «1», потом «3».

Op: показывет две картинки, говорит оба раза «3».

Kolyaj 07.02.2010 15:33

Ещё в IE по getElementsByTagName можно получить комментарии и doctype.
getElementsByTagName('!')

fizzle 08.02.2010 00:02

<script type="text/javascript">
function month() {
var x = document.getElementsByName("month")
document.getElementById("a3").innerHTML = x[0].value;
}
function year() {
var y = document.getElementsByName("year")
document.getElementById("b3").innerHTML = y[0].value;
}

</script>

<table width="400" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100">Ячейка 1</td>
<td width="200"><input type="text" name="month"  /></td>
<td width="100"><input type="button" value="Ввести" onclick="month()" /></td>
</tr>
<tr>
<td>Ячейка 2</td>
<td><input type="text" name="year" value=""/></td>
<td><input type="button" value="Ввести" onclick="year()" /></td>
</tr>
</table>
<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr>
<td align="center" id="a3">Data1</td>
<td align="center" id="b3">Data2</td>
</tr>
</table>


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