【问题标题】:Get value of dynamic input element in form object获取表单对象中动态输入元素的值
【发布时间】:2014-02-14 18:41:38
【问题描述】:

我的问题是:如何在表单中引用输入元素的动态“名称”?

例如,使用以下 HTML:

<form>
    <input type="text" name="qty1" value="input1" />
     <input type="text" name="qty2" value="input2" />
     <input type="text" name="qty3" value="input3" />

    <input type="submit" value="Submit" onClick="checkVal(this.form); return false;" />
</form>

Javascript:

function checkVal(form) {
    for (var i = 1; i <= 3; i++) {
        alert(form.qty+i.value);  // Here's where my problem is..
    }
}

上面的 javascript 不起作用。警报正在输出NaN

如何使用i 变量在for 循环中引用qty1qty2qty3

这是一个 jsfiddle:http://jsfiddle.net/MRzWf/

【问题讨论】:

  • alert(document.getelementbyid('qty' + i).value);

标签: javascript html forms


【解决方案1】:

使用Bracket notation

 form["qty" + i].value

function checkVal(form) {
    for (var i = 1; i <= 3; i++) {
        console.log("qty" + i, form["qty" + i].value);
    }
}
<form>
    <input type="text" name="qty1" value="input1" />
    <br/>
    <input type="text" name="qty2" value="input2" />
    <br/>
    <input type="text" name="qty3" value="input3" />
    <br/>
    <input type="submit" value="Submit" onClick="checkVal(this.form); return false;" />
</form>

【讨论】:

  • 太棒了!谢谢你。这是我需要的。 :)
【解决方案2】:

只需作为字典登录

http://jsfiddle.net/MRzWf/2/

 alert(form["qty"+i].value);

【讨论】:

    【解决方案3】:

    标准解决方案

    使用:form.elements[] 应该适用于所有浏览器..

    function checkVal(form) {
        for (var i = 1; i <= 3; i++) {
            alert(form.elements["qty"+i].value);
    
            /* OR using dynamic name variable
            var ename = "qty"+i;
            alert(form.elements[ename].value);
            */
        }
    }
    

    【讨论】:

      【解决方案4】:

      试试这个。它适用于上述问题

      function checkVal(form) {
      for (var i = 0; i < 3; i++) {
          alert(document.getElementsByTagName("input")[i].value);
      }  }
      

      【讨论】:

        【解决方案5】:

        问题是form.qty+i

        要访问数组的元素,您应该在括号内使用index

        还有另一种检查输入值的方法。这是一个。

          function checkVal(form) {
            var allInputs = document.getElementsByTagName('input');
            for (var i = 0; i < 3; i++) {
                  if(allInputs[i].type == 'text'){
                        alert(allInputs[i].value);  
                  }
            }
        }
        

        DEMO

        【讨论】:

          猜你喜欢
          • 2015-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-29
          • 1970-01-01
          • 2020-05-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多