getelementsbyname返回未定义的值

时间:2018-04-07 15:33:46

标签: javascript html arrays

我是一个javascript新手,我试过这个。

<html>
<style>
#WoodNumInput {
	width:40px;
}
</style>
<body>
<script>
var i;
var woodtypeAB = ["AB_W15_L100","AB_W20_L100", "AB_W25_L100", "AB_W30_L100"];

	for (i = 0; i < 4 ; i++) {
		document.write("<div id = 'box'><input type ='number' name = '" + woodtypeAB[i] + "' id = 'WoodNumInput' value = " + i + "></div><br/>");	
		}
</script>
<br/>
<input type = "button" value = "calculate" onclick= "Calculation()">
<div id = "Test"></div>
<script> 
	function Calculation() {
	var ShowResult = document.getElementsByName("woodtypeAB[3]").value;
	document.getElementById("Test").innerHTML = ShowResult;
	}
</script>
</body>

该值返回undefined,我仍然无法理解。

提前感谢您的帮助和建议。

2 个答案:

答案 0 :(得分:1)

这个

var ShowResult = document.getElementsByName(woodtypeAB[3])[0].value

应该是

"woodtypeAB[3]"

由于document.getElementsByName()被引号括起,因此它将被解释为字符串而不是实际的数组值。

[0]返回元素的NodeList,因此您必须明确说明您想要NodeList中的第一项,因此var rows = dataGridView1.rows; double sum = 0; foreach (DataGridViewRow row in rows) { sum += (double)row.Cells["Column 3"].Value; }

答案 1 :(得分:0)

有一些问题。

首先,您尝试从集合而不是单个元素中获取.value

此外,您创建的元素的名称值为AB_...,但您尝试使用非常不同的名称进行提取。

我想你或许认为你提取的woodtypeAB[3]会以某种方式转换为你用来创建元素名称的变量和索引。这不是它的工作原理。

创建元素时,连接添加woodtypeAB[3]作为名称,而是 位于那个数组的索引。因此,要获取该特定名称,您将使用其数组值AB_W30_L100

<html>
<style>
  #WoodNumInput {
    width: 40px;
  }
</style>

<body>
  <input type="button" value="calculate" onclick="Calculation()">
  <div id="Test"></div>
  <br>
  <script>
    var i;
    var woodtypeAB = ["AB_W15_L100", "AB_W20_L100", "AB_W25_L100", "AB_W30_L100"];

    for (i = 0; i < 4; i++) {
      document.write("<div id = 'box'><input type ='number' name = '" + woodtypeAB[i] + "' id = 'WoodNumInput' value = " + i + "></div><br/>");
    }
  </script>
  <br/>
  <script>
    function Calculation() {
      var ShowResult = document.getElementsByName("AB_W30_L100");
      if (ShowResult.length != 0) {
        document.getElementById("Test").innerHTML = ShowResult[0].value;
      }
    }
  </script>
</body>

虽然有些东西告诉我你实际上想要选择所有这些输入元素并对它们进行一些计算。这将需要对您的代码进行额外的调整。