带复选框的JavaScript异常行为

时间:2012-09-27 06:30:04

标签: javascript checkbox

我使用了以下代码:

<html>
<head>
<script type="text/javascript" language="javascript">
    function doit(page) {
        var entry = page.entry;
        var flag = false;
        document.write(entry.length);
    }
</script>
</head>
<body>
    <span id="error_checkbox" style="color: blue;"> </span>
    <form name="subscribeTablePage">
        <input type="checkbox" id="entry" value="1"/> <label>1</label><br/>
        <input type="button" value="Submit" onclick="doit(document.subscribeTablePage)"/>
    </form>
</body>
</html>

为什么entry.length的值未定义?在我尝试使用多个复选框的同时,entry.length的值是使用的复选框数量!

用例: 我将从数据库中检索行,在这种情况下,我需要检查检查的复选框的数量,以执行删除操作!请给出有价值的评论来排序这个问题

3 个答案:

答案 0 :(得分:0)

您正在尝试访问复选框#entry。像这样添加属性name="entry"

<input type="checkbox" id="entry" name="entry" value="1" />

表单对象由name属性访问。

对于Javascript,您需要value,而不是length

document.write(entry.value);

length表示给定字符串的字符长度。

答案 1 :(得分:0)

entry是您id的{​​{1}} 如果你想以这种方式引用它,它应该是input

name

要按ID显示元素,必须使用

<input type="checkbox" name="entry" id="entry" value="1"/>

另外,我没有找到使用长度的目标。您可以获得document.getElementById('idOfElement') 而不是size的{​​{1}}。

如果您想查找已选中的复选框的数量,那么可能在javascript中您可以通过编写如下脚本来检查

input

答案 2 :(得分:0)

  

为什么entry.length的值未定义?

因为form.entry引用了该元素,并且该元素没有length属性。你想要:

entry.value.length;
  

在我尝试使用多个复选框的同时,entry.length的值是使用的复选框的数量!

因为如果多个表单控件具有相同的名称,form.controlName引用具有相同名称的所有控件的集合。 HTML Collections有一个length属性,它是集合中元素的数量。

另外,该行:

>       document.write(entry.length);

将清除整个文档,可能是您想要的:

 alert(entry.value.length);

 // or

 console.log(entry.value.length);

您可能会发现阅读HTML 5 specification中有关表单的整个部分以及HTML 4.01 standard的相关部分非常有用。