Javascript array.length of elements不';不能用少于2个元素工作?

Javascript array.length of elements不';不能用少于2个元素工作?,javascript,checkbox,Javascript,Checkbox,下面是一个简单的小javascript函数,它生成一个包含myform(myform)中所有复选框(视频)的数组,并构建另一个复选框数组。除非表单中只有一个复选框,否则它非常有效。在这种情况下,框是未定义的。document.myform.video.length为1时不应该这样吗 function toggle(main) { boxes = document.myform.video.length; alert(boxes); var videos = [];

下面是一个简单的小javascript函数,它生成一个包含myform(myform)中所有复选框(视频)的数组,并构建另一个复选框数组。除非表单中只有一个复选框,否则它非常有效。在这种情况下,框是未定义的。document.myform.video.length为1时不应该这样吗

function toggle(main) {
    boxes = document.myform.video.length;
    alert(boxes);
    var videos = [];
    for (i=0; i<boxes; i++) {
            document.myform.video[i].checked = main.checked;

    }
}
功能切换(主){
框=document.myform.video.length;
警报(框);
var视频=[];

对于(i=0;i不,如果只有一个同名元素,DOM会将其显示为元素而不是数组。

不,如果只有一个同名元素,DOM会将其显示为元素而不是数组。

好吧,见鬼,这让它有点复杂。必须检查它是元素还是数组。我不确定该怎么做hat。@Adam,判断某个对象是否是数组有点困难,但我发现最好的方法是。在这种情况下,使用getElementsByTagName()方法而不是document对象的属性通常对我有效。只需过滤结果,使其仅包含type=“checkbox”无论是否有一个或多个结果,返回的结果都将类似于数组:)我通过测试document.myform.video.length并将document.myform.video推送到一个新数组中,或在document.myform.video[]中复制解决了这个问题根据长度的不同,将其放入其中。好吧,见鬼,这让它变得有点复杂。必须检查它是一个元素还是一个数组。我不确定我该怎么做。@Adam,确定某个内容是否是数组有点困难,但我发现的最好方法是。在像这样的情况下,使用getElementsByTagName()来确定方法而不是文档对象的属性通常适用于我。只需筛选结果以仅包含type=“checkbox”,返回的结果将类似于数组,无论是否有一个或多个结果:)我通过测试document.myform.video.length并将document.myform.video推入一个新数组,或者根据长度将document.myform.video[]复制到该数组中,从而解决了这个问题。