简单的JavaScript检查不起作用?

简单的JavaScript检查不起作用?,javascript,Javascript,我有一个验证表单功能: function ValidateForm() { var chks = document.register.elements['sendto[]']; var hasChecked = false; for (var i=0;i<chks.length;i++){ if (chks[i].checked){ hasChecked = true; break; }

我有一个验证表单功能:

function ValidateForm() {
    var chks = document.register.elements['sendto[]'];
    var hasChecked = false;
    for (var i=0;i<chks.length;i++){
        if (chks[i].checked){
            hasChecked = true;
            break;
        }
    }
    if (!hasChecked){
        alert("Please select at least one friend.");
        chks[0].focus();
        return false;
    }
}
函数ValidateForm(){
var chks=document.register.elements['sendto[]'];
var hasChecked=false;
对于(变量i=0;i

函数验证(){
var chks=document.getElementsByName('sendto[]);
var hasChecked=false;
对于(变量i=0;i

函数验证(){
var chks=document.getElementsByName('sendto[]);
var hasChecked=false;
对于(变量i=0;i
声明

var chks = document.register.elements['sendto[]'];
获取名为
sendto[]
如果只有一个元素名为
sendto[]
,则该元素的引用位于
chks

如果有多个元素的名称为
sendto[]
,则
chks
保留对这些元素数组的引用

执行此操作时:

 for (var i=0;i<chks.length;i++){
PS:
代码在ValidateForm()上给出了一条未定义的消息,但它并没有传达太多信息。即使对您来说,也不清楚这意味着什么(这就是为什么您要问这个问题)。尝试提供更多详细信息。任何现代浏览器都会提供有关未定义的、未定义的内容、哪一行等的更多详细信息。即使是历史之前的浏览器也会告诉您引发未定义错误的行号。有了这些详细信息,您可以尝试查找该行并尝试查看发生的情况。您很可能会发现。如果您不知道,p将所有这些细节发布到这里的社区。

声明

var chks = document.register.elements['sendto[]'];
获取名为
sendto[]
如果只有一个元素名为
sendto[]
,则该元素的引用位于
chks

如果有多个元素的名称为
sendto[]
,则
chks
保留对这些元素数组的引用

执行此操作时:

 for (var i=0;i<chks.length;i++){
PS:

代码在ValidateForm()上给出了一条未定义的消息,但它并没有传达太多信息。即使对您来说,也不清楚这意味着什么(这就是为什么您要问这个问题)。尝试提供更多详细信息。任何现代浏览器都会提供有关未定义的、未定义的内容、哪一行等的更多详细信息。即使是历史之前的浏览器也会告诉您引发未定义错误的行号。有了这些详细信息,您可以尝试查找该行并尝试查看发生的情况。您很可能会发现。如果您不知道,p向社区发布所有这些详细信息。

以下是我将如何做到这一点

if(!validate()){
  alert("Please select at least one.");
  return false;
}

function validate(){
  var els=document.getElementsByName('sendto[]');
  for(var i=0;i<els.length;i++){
    if(els[i].checked){
      return true;
    }
  }
  return false;
}
if(!validate()){
警报(“请至少选择一个。”);
返回false;
}
函数验证(){
var els=document.getElementsByName('sendto[]);

对于(var i=0;i,我将这样做

if(!validate()){
  alert("Please select at least one.");
  return false;
}

function validate(){
  var els=document.getElementsByName('sendto[]');
  for(var i=0;i<els.length;i++){
    if(els[i].checked){
      return true;
    }
  }
  return false;
}
if(!validate()){
警报(“请至少选择一个。”);
返回false;
}
函数验证(){
var els=document.getElementsByName('sendto[]);

对于(var i=0;我假设
register
是他的表单名。@古诺你怎么知道消息没有定义?你在控制台中检查吗?听起来不像是鸡巴什么的,但是你可能需要在
for
语句中把
++
放在
i
之前。事实上,只有当问题刚刚出现时,问题才会出现e元素表明可能是这样的..但我一点也不确定,所以我不会把它作为一个答案。我假设
register
是他的表单名。@Gurnor你怎么知道消息是未定义的?你是在控制台中检查的吗?听起来不像是迪克或其他什么,但也许你需要把
++
放在
i 在
for
语句中..只有当只有一个元素时才会出现问题这一事实表明可能就是它..但我根本不确定,因此我不会将此添加为答案。尝试此代码时,我收到以下警告:警告:为foreach()提供的参数无效@Gurnor我没有使用for each循环。你确定它在我的代码中吗?它似乎对我有效。是否有行号告诉错误发生的位置?尝试此代码时,我收到以下警告:警告:为foreach()提供的参数无效@Gurnor我没有使用for each循环。你确定它在我的代码中吗?它似乎对我有效。是否有行号可以告诉错误发生在哪里?@Gurnor:not working=?你还没有给出更多的细节。顺便说一句,我的目的不是给你正确的代码,而是给你指出正确的方向…@Gurnor:not working=?你没有给出更多的细节。顺便说一句,我的目的不是给你正确的代码,而是给你指出正确的方向。。。
if(!validate()){
  alert("Please select at least one.");
  return false;
}

function validate(){
  var els=document.getElementsByName('sendto[]');
  for(var i=0;i<els.length;i++){
    if(els[i].checked){
      return true;
    }
  }
  return false;
}