[英]why getElementsByName is giving undefined value in javascript?
[英]getelementsbyname Return Undefined value
我是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>
該值返回未定義,我仍然無法弄清楚。
在此先感謝您的幫助和建議。
這個
var ShowResult = document.getElementsByName("woodtypeAB[3]").value
應該
var ShowResult = document.getElementsByName(woodtypeAB[3])[0].value
由於"woodtypeAB[3]"
用引號引起來,因此它將被解釋為字符串,而不是實際的數組值。
document.getElementsByName()
返回元素的NodeList,因此您必須明確地說您要NodeList中的第一項,因此[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>
盡管有些事情告訴我您實際上將要選擇所有這些輸入元素並對其進行一些計算。 這將需要對代碼進行其他調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.