【问题标题】:Javascript getElementsByName.value not working [duplicate]Javascript getElementsByName.value 不起作用[重复]
【发布时间】:2013-11-19 00:45:08
【问题描述】:

我正在尝试制作一个无法正常工作的简单 javascript 程序。请帮忙。 在 Eclipse 中,我创建了一个动态 Web 项目,在 DD 中,我的欢迎文件是 index.jsp。 下面给出的是我的 index.jsp 代码

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Duncan'S</title>
<script type="text/javascript">
function nameSubmit() {
    alert(document.getElementsByName("username").value);
}
function CakeNumber() {
    alert(document.getElementsByName("numOfCake").value);
}
</script>
</head>
<body>
<form action="myservlet.do">
    <table>
        <tr>
              <td>Name:</td>
              <td><input type="text" id="name" name="username" size="10"
                onchange="nameSubmit();"></td>
        </tr>
        <tr>
              <td>Number Of Duncan's Cake:</td>
              <td><input type="text" id="numOfDunCake" name="numOfCake"
                size="5" onchange="CakeNumber();"></td>
        </tr>
    </table>
</form>
</body>
</html>

在上面的代码中,两个函数都返回 undefined .....!!我怎样才能得到真正的价值?

【问题讨论】:

  • 您使用的是username 而不是name

标签: javascript


【解决方案1】:

Here 是具有一个或多个复选框值的示例。如果您有两个或更多复选框并且需要值,那么这真的很有帮助。

function myFunction() {
  var selchbox = [];
  var inputfields = document.getElementsByName("myCheck");
  var ar_inputflds = inputfields.length;

  for (var i = 0; i < ar_inputflds; i++) {
    if (inputfields[i].type == 'checkbox' && inputfields[i].checked == true)
      selchbox.push(inputfields[i].value);
  }
  return selchbox;

}

document.getElementById('btntest').onclick = function() {
  var selchb = myFunction();
  console.log(selchb);
}
Checkbox:
<input type="checkbox" name="myCheck" value="UK">United Kingdom
<input type="checkbox" name="myCheck" value="USA">United States
<input type="checkbox" name="myCheck" value="IL">Illinois
<input type="checkbox" name="myCheck" value="MA">Massachusetts
<input type="checkbox" name="myCheck" value="UT">Utah

<input type="button" value="Click" id="btntest" />

【讨论】:

    【解决方案2】:

    document.getElementsByName("name") 将获得几个同名的元素。 document.getElementsByName("name")[Number] 将获得其中之一。 document.getElementsByName("name")[Number].value 将获取特定元素的值。

    这道题的关键是:
    元素名称不唯一,通常用于表单中的多个输入元素。
    另一方面,元素的 id 是唯一的,它是 html 文件中特定元素的唯一定义。

    【讨论】:

      【解决方案3】:

      你提到了错误的 id

      alert(document.getElementById("name").value);
      

      如果你想使用 name 属性然后

      alert(document.getElementsByName("username")[0].value);
      

      更新:

      input type="text" id="name" name="username"  
      

      id 与名称不同

      【讨论】:

      • Praveen 这个表达式为函数 CakeNumber() 提供了正确的值所以我猜它以某种方式起作用。如果我错了,请纠正我。我应该用什么来获取价值??
      • @user2583134 no in CakeNumber() name 和 id 都具有相同的名称,因此它正在工作,请参阅input type="text" id="numOfDunCake" name="numOfDunCake"
      • @Praveen 我尝试使用 GetElementByName() 并更改了 name 和 id 的值,将 name 的值作为函数中的参数,但它仍然不起作用,这次第一个函数正在返回值未定义,第二个函数永远不会被调用:(
      • @Praveen 我已经使用了你说的命令,但现在他们都返回“未定义”。我该怎么办?
      • @Praveen 非常感谢朋友......这次成功了。还有一件事我怎样才能通过使用 id 来获得价值......?? :)
      猜你喜欢
      • 2014-04-22
      • 2010-12-22
      • 1970-01-01
      • 2016-10-23
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多