首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript循环getElementsByName

Javascript循环getElementsByName
EN

Stack Overflow用户
提问于 2020-05-06 15:15:35
回答 1查看 187关注 0票数 1

我需要在选中50时用值填写第二列,在未选中CheckBox时使用值填写。

我似乎觉得document.getElementsByName("val" + i).value不能正常工作,或者我漏掉了什么。

编辑我用document.getElementsByName("val" + i).value代替了document.getElementsByName("val" + i)[0].value,并在循环中引入了if条件

代码语言:javascript
复制
function myFunction() {
  var checkBox = document.getElementById("myCheck");
  var table = document.getElementById("myTable");
  var i;

  
    for (i = 0; i < table.rows.length; i++) {
        if (checkBox.checked == true) {
            document.getElementsByName("val" + i)[0].value  = "50";
        } else {
            document.getElementsByName("val" + i)[0].value  = "0";
        }
    }
  
}
代码语言:javascript
复制
table,
th,
td {
  border: 1px solid black;
  border-collapse: collapse;
}
代码语言:javascript
复制
Checkbox: <input type="checkbox" id="myCheck" onclick="myFunction()">

<table id="myTable">
  <tr>
    <th>Interval</th>
    <th>Valori</th>
  </tr>
  <tr>
    <td>Int 1</td>
    <td><input name="val1" value size="5"></td>
  </tr>
  <tr>
    <td>Int 2</td>
    <td><input name="val2" value size="5"></td>
  </tr>
  <tr>
    <td>Int 3</td>
    <td><input name="val3" value size="5"></td>
  </tr>
  <tr>
    <td>Int 4</td>
    <td><input name="val4" value size="5"></td>
  </tr>
  <tr>
    <td>Int 5</td>
    <td><input name="val5" value size="5"></td>
  </tr>
</table>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-06 15:40:30

我想这就是你需要的。您的当前代码有几个问题。

i = 0;

  • document.getElementsByName表中有6个元素,包括第一个tr <tr>th>Interval</th><th>Valori</th></tr>,因此您需要从i = 1;开始,而不是从i = 1;返回一个NodeList元素。元素的NodeList没有.value属性。因此,在访问索引[0]之前,必须使用索引[0]

  • ,正如您所说的,如果不检查0,则需要window.onload = myFunction;,它将帮助您将所有列设置为0,以修改checkBox.checked条件,这样您就可以在检查上设置E 12450<代码>e 225,并在未选中时设置E 126E 227。H 228G 229

代码语言:javascript
复制
function myFunction() {
  var checkBox = document.getElementById("myCheck");
  var table = document.getElementById("myTable");
  var i;

  for (i = 1; i < table.rows.length; i++) {
    if (checkBox.checked == true) {
      document.getElementsByName("val" + i)[0].value = 50;
    } else {
      document.getElementsByName("val" + i)[0].value = 0;
    }
  }
}

window.onload = myFunction;
代码语言:javascript
复制
<html>

<body>

  <head>
    <style>
      table,
      th,
      td {
        border: 1px solid black;
        border-collapse: collapse;
      }
    </style>
  </head>

  Checkbox: <input type="checkbox" id="myCheck" onchange="myFunction()">

  <table id="myTable">
    <tr>
      <th>Interval</th>
      <th>Valori</th>
    </tr>
    <tr>
      <td>Int 1</td>
      <td><input name="val1" size="5"></td>
    </tr>
    <tr>
      <td>Int 2</td>
      <td><input name="val2" size="5"></td>
    </tr>
    <tr>
      <td>Int 3</td>
      <td><input name="val3" size="5"></td>
    </tr>
    <tr>
      <td>Int 4</td>
      <td><input name="val4" size="5"></td>
    </tr>
    <tr>
      <td>Int 5</td>
      <td><input name="val5" size="5"></td>
    </tr>
  </table>




</body>

</html>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61638784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档