您如何检查您获得的复选框值是变量还是数组。我有一个 PHP 脚本,它根据文件夹中存在的目录数量动态填充带有复选框的表单。现在只要有多个目录我就可以使用下面的代码
for (i=0;i<document.getElementById('editarticle').currentcategories.length;i++)
{
if
(document.getElementById('editarticle').currentcategories[i].checked==true)
{
currentcheckedcategories[currentcheckedcategoriescounter] =
document.getElementById('editarticle').currentcategories[i].value;
currentcheckedcategoriescounter++
}
else
{
currentnotcheckedcategories[currentnotcheckedcategoriescounter] =
document.getElementById('editarticle').currentcategories[i].value;
currentnotcheckedcategoriescounter++
}
}
但是,如果 current-categories 不是一个数组,即只有一个类别,那么我会得到一个 undefined 并且不会收集类别值。通过在运行 for 循环之前检查 currentcategories 是否是一个数组来绕过这个问题的唯一方法是什么?如果是这样,我将如何检查 currentcategories 是否是一个数组。我在另一个论坛上读到,您可以使用 Array 的实例,但这似乎不起作用,另一个网站说这样做不会安全,因为使用 iFrame 会失败。希望有人可以阐明如何检查 currentcategories 是否是一个数组或为我的问题提供替代代码。提前致谢。
PS。我需要代码在 JavaScript 中,而不是在 JQuery 或任何其他框架中。
部分解决
Well, so far I have used the following if statement to check if the multiple checkboxes with the same name are present or not.
if(document.getElementById('editarticle').currentcategories.length == undefined)
An undefined means that only one checkbox with that name is available. Otherwise their are multiple currentcategories checkboxes which can be selected. Seems to work in IE 8 Firefox and Chrome. Not convinced it is the best method. Perhaps if someone sees a flaw in this implementation or a better solution please do let me know.
我尝试了 Edorkas 代码,但该代码根据 currentcategories 值对数组返回 true。因此,如果我有三个名为 currentcategories 的复选框并且只选择了一个,那么代码将为数组返回 false。当然,这可能是我的错,因为我将这个问题的标题写成“如何检查复选框值是否为数组”,也许更好的标题是“如何检查是否存在同名的多个复选框”。我已经改变了它以更好地反映我的问题。