【问题标题】:Using a javascript function with a checkbox array使用带有复选框数组的 javascript 函数
【发布时间】:2012-11-16 14:09:58
【问题描述】:

所以我有一个复选框数组名称“vote []”,我想调用一个函数来勾选所有这些,atm 我的函数是这样的

function checkAll(field)  
{  
    for (i = 0; i < field.length; i++)  
        field[i].checked = true ;  
}

我这样称呼它

checkAll(document.form.vote)

但它不起作用...... wutdo?

谢谢,本

p.s 我已经试过了

checkAll(document.form.vote[]) 

它不起作用。

【问题讨论】:

    标签: php javascript arrays checkbox


    【解决方案1】:

    试试:

    checkAll(document.form['vote[]'])
    

    解释: [] 是名称的一部分,但如果您将其写成 form.vote[],它将被解释为 JavaScript(可能无效)。幸运的是,在 JavaScript 中有两种访问对象属性的方法:点符号 foo.bar 和数组符号 foo['bar']。如果属性不是有效的 JavaScript 标识符,则后者会派上用场。

    进一步的建议:由于我们不知道您的 HTML 看起来如何,document.form 也可能无法正常工作。我建议给表单一个 ID 并调用:

    checkAll(document.getElementById('yourFormID')['vote[]'])
    

    更新:

    为我工作:DEMO

    【讨论】:

    • 不工作:S还有其他想法吗?
    • 都试过了,但都没有成功:S 我的 html 很简单,不能同时复制按钮和 javascript
    • function checkAll(field) { for (i = 0; i
    • @Ben Mills:你有一个引用错误。仔细看:OnClick="checkAll(document.getElementById("form")["vote[]"])"。不能在双引号字符串中使用双引号。请改用单引号:OnClick="checkAll(document.getElementById('form')['vote[]'])"。看看演示。
    【解决方案2】:

    虽然原始海报能够让这个工作,另一种方式(避免 getElementsByTagName 调用)是:

    checkAll(document.formname.elements['vote[]'])
    

    希望将来能对某人有所帮助。 :)

    【讨论】:

      【解决方案3】:

      尝试通过仅使用复选框过滤来做到这一点,即type='checkbox'

      var boxes = document.getElementsByTagName('input');
          if(boxes.type='Checkbox'){
              for (var i = 0; i < boxes.length; i++) {
                  if (boxes[i].name == 'vote[]' ) {
                      boxes[i].checked = true;
                  }
              }
          }
      

      【讨论】:

        【解决方案4】:

        尝试使用document.getElementsByName 来代替:

        checkAll(document.getElementsByName('vote[]'));
        

        如果这不起作用,试试这个,循环遍历所有 input 元素。

        var boxes = document.getElementsByTagName('input');
        for (var i = 0; i < boxes.length; i++) {
            if (boxes[i].name == 'vote[]') {
                boxes[i].checked = true;
            }
        }
        

        【讨论】:

        • 行不通:还有其他想法吗?
        猜你喜欢
        • 1970-01-01
        • 2017-11-15
        • 2014-01-30
        • 1970-01-01
        • 1970-01-01
        • 2016-03-27
        • 2011-12-03
        • 1970-01-01
        • 2012-07-17
        相关资源
        最近更新 更多