Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript和仅一个复选框-未定义 for(i=0;i_Javascript_Html_Forms_Checkbox - Fatal编程技术网

Javascript和仅一个复选框-未定义 for(i=0;i

Javascript和仅一个复选框-未定义 for(i=0;i,javascript,html,forms,checkbox,Javascript,Html,Forms,Checkbox,您可能已经知道,什么时候只剩下一个复选框document.checks.user.length=未定义。确保只有一个复选框时将其删除的最有效方法是什么。我只是想把它作为一个单独的if语句添加到if语句之前……任何建议 谢谢。jQuery是您的朋友: for (i = 0; i < document.checks.user.length; i++) //for all check boxes { if (document.checks.user[i].checked == true

您可能已经知道,什么时候只剩下一个复选框document.checks.user.length=未定义。确保只有一个复选框时将其删除的最有效方法是什么。我只是想把它作为一个单独的if语句添加到if语句之前……任何建议

谢谢。

jQuery是您的朋友:

for (i = 0; i < document.checks.user.length; i++) //for all check boxes
{
    if (document.checks.user[i].checked == true )
    {
        document.checks.submit();
        return 0;
    }
}

<body>
<form action="" method=POST name="checks" ID="Form2">
  I have a bike:
  <input type="checkbox" name="user" value="Bike" ID="Checkbox1">
  <br>
  <br>
</form>
<input type="button" value="Delete" 
    class="btn" onclick="sub_delete()" 
    onmouseover="hov(this, 'btn btnhov')" onmouseout="hov(this, 'btn')" 
    id="Button1" name="Button1" 
/>
</body>

(…如果您可以使用jQuery?

我可能会遍历document.checks.elements,查找.type==“checkbox”。

使用循环控制变量,如果长度未定义,则将其设置为1

$("input[type='checkbox']").attr('checked', false);
var len=document.checks.user.length;
如果(len==未定义)len=1;
for(i=0;i
致以最良好的祝愿

var len = document.checks.user.length;
if(len == undefined) len = 1;
for (i = 0; i < len; i++) //for all check boxes
如果要循环一组复选框,可以循环表单的输入字段,如:

if (document.getElementById('Checkbox1').checked) { /* do something */ }
var formNodes=document.checks.getElementsByTagName('input');

对于(var i=0;i您的问题有些令人困惑,因为您的javascript显然必须位于名为“sub_delete”的函数中才能使用……拥有强大编辑问题能力的人可能会通过使问题更清晰来改进问题

因此,您必须解决的第一个问题是,对于具有给定名称“user”的单个复选框,它不是一个数组,因此没有定义的长度,但如果您尝试将其作为数组访问,则也会遇到这样的问题。事情会变得混乱。javascript函数的完全重写可能如下所示:

var formNodes  = document.checks.getElementsByTagName('input');
for (var i=0;i<formNodes.length;i++) {
   /* do something with the name/value/id or checked-state of formNodes[i] */
}
功能子单元删除{
if(typeof document.checks.user.length==‘未定义’){
/*然后只有一个名为“user”的复选框没有数组*/
if(document.checks.user.checked==true)
{
document.checks.submit();
返回0;
}   
}否则{
/*然后有几个名为“user”的复选框组成一个数组*/
对于(var i=0,max=document.checks.user.length;i
嗯,,
-FT

我也面临同样的问题,总共有5个复选框,其中4个被禁用,1个被启用。现在checkboxId.length未定义,所以我能想到的唯一选项是如果(checkboxId.length==未定义){checkboxId.checked=true&提交表单}.

非常简单,只需创建一个与现有复选框输入标记同名的隐藏输入标记

例如:

    function sub_delete{
        if (typeof document.checks.user.length === 'undefined') {
   /*then there is just one checkbox with the name 'user' no array*/
        if (document.checks.user.checked == true )
                            {
                                document.checks.submit();
                                return 0;
                            }   
    }else{
  /*then there is several checkboxs with the name 'user' making an array*/
        for(var i = 0, max = document.checks.user.length; i < max; i++){
            if (document.checks.user[i].checked == true )
                            {
                                document.checks.submit();
                                return 0;
                            }

        }
    }
    }//sub_delete end


为什么要给所有复选框起相同的名字?这没有多大意义。因为当它被提交到php之类的东西时,你可以将它们作为一个数组来处理……这非常有意义……复选框是复选框的名称,用户是复选框的名称。呃,推荐一个用于最简单任务的大型框架。嘿-是的,我接受y我们的观点。我想最近的jQuery让我有点吃惊:它解决了我很多浏览器特有的难题!:-)这就是我要找的。然而,我意识到,当只剩下一个元素时,当只有一个元素时,我的if语句将不起作用。i、 e->if(document.checks.user[0].checked==true)我相信它不再将用户视为数组。。。。?我会把文件放在.checks.submit()上;在这个循环控制中。
    function sub_delete{
        if (typeof document.checks.user.length === 'undefined') {
   /*then there is just one checkbox with the name 'user' no array*/
        if (document.checks.user.checked == true )
                            {
                                document.checks.submit();
                                return 0;
                            }   
    }else{
  /*then there is several checkboxs with the name 'user' making an array*/
        for(var i = 0, max = document.checks.user.length; i < max; i++){
            if (document.checks.user[i].checked == true )
                            {
                                document.checks.submit();
                                return 0;
                            }

        }
    }
    }//sub_delete end
<input type="checkbox" name="user" value="Bike" ID="Checkbox1">
<input type="hidden" name="user" value=""/>