Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   getElementsByName и выборка из name[] (https://javascript.ru/forum/misc/60240-getelementsbyname-i-vyborka-iz-name%5B%5D.html)

damon 18.12.2015 13:56

getElementsByName и выборка из name[]
 
Здравствуйте!

Подскажите, почему не получается с помощью getElementsByName выбрать значения из определенных инпутов, которые состоят из массива?

Есть форма, в которой два вида инпутов: input name="pr_uv[]" и input name="pr_neuv[]". Необходимо собрать все value из инпутов с именем name="pr_uv[]".

Получается это сделать с помощью document.getElementsByClassName, а хотелось бы через getElementsByName.

<html>
<head>
<title>getElementsByName</title>
<meta name="generator" content="notepad">
<meta http-equiv="content-type" content="text/html; charset=windows-1251">

<script type="text/javascript"> 

function propUvClass() {
	var elems = document.getElementsByClassName('prUv');

	for (var i = 0; i < elems.length; i++) {
		alert(elems[i].value);
	}
}

function propUvName() {
	var elems = document.getElementsByName("pr_uv[]");
	//var elems = document.getElementsByName("pr_uv");
	alert(elems);

	for (var i = 0; i < elems.length; i++) {
		alert(elems[i].value);
	}

}

</script>
</head>

<body>

<form action="" method="post" id="Form1" name="Form1">
<input onclick="propUvName();" class="buttom" type="button" value="Подсчет (ByName)">
<br>
<br>

name="pr_uv[]" <input class="prUv" type="text" value="1" name="pr_uv[1]"></input>
<input class="prUv" type="text" value="2" name="pr_uv[3]"></input>
<input class="prUv" type="text" value="3" name="pr_uv[5]"></input>
<br>
name="pr_neuv[]" <input type="text" value="5" name="pr_neuv[2]"></input>
<input type="text" value="7" name="pr_neuv[4]"></input>
<input type="text" value="9" name="pr_neuv[7]"></input>
<br>
<br>
<input onclick="propUvClass();" class="buttom" type="button" value="Подсчет (ByClassName)">

</form>

</body>
</html>

Mess4me 18.12.2015 14:33

damon,
getElementsByName Вы же отбираете по имени которого нету pr_uv[].
У Вас есть pr_uv[1], pr_uv[3],pr_uv[5]

рони 18.12.2015 14:35

damon,
var elems = document.querySelectorAll('[name^="pr_uv"]');

Mess4me 18.12.2015 14:38

damon,
<html>
<head>
    <title>getElementsByName</title>
    <meta name="generator" content="notepad">
    <meta http-equiv="content-type" content="text/html; charset=windows-1251">

    <script type="text/javascript">

        function propUvClass() {
            var elems = document.getElementsByClassName('prUv');

            for (var i = 0; i < elems.length; i++) {
                alert(elems[i].value);
            }
        }

        function propUvName() {
            var elems = document.querySelectorAll('[name^="pr_uv"]');
            //var elems = document.getElementsByName("pr_uv");

            for (var i = 0; i < elems.length; i++) {
                alert(elems[i].value);
            }

        }

    </script>
</head>

<body>

<form action="" method="post" id="Form1" name="Form1">
    <input onclick="propUvName();" class="buttom" type="button" value="Подсчет (ByName)">
    <br>
    <br>

    name="pr_uv[]" <input class="prUv" type="text" value="1" name="pr_uv[1]"></input>
    <input class="prUv" type="text" value="2" name="pr_uv[3]"></input>
    <input class="prUv" type="text" value="3" name="pr_uv[5]"></input>
    <br>
    name="pr_neuv[]" <input type="text" value="5" name="pr_neuv[2]"></input>
    <input type="text" value="7" name="pr_neuv[4]"></input>
    <input type="text" value="9" name="pr_neuv[7]"></input>
    <br>
    <br>
    <input onclick="propUvClass();" class="buttom" type="button" value="Подсчет (ByClassName)">

</form>

</body>
</html>

damon 23.12.2015 16:16

ОК, понял.
Спасибо!


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