Javascript 函数返回未定义的值

Javascript 函数返回未定义的值,javascript,function,dom,return,Javascript,Function,Dom,Return,我有一些代码,我想用它来验证文本字段中的电子邮件数量 function lockSubmits(selector,value){ var submitInputs = document.querySelectorAll(selector); for(var j = 0; j<=submitInputs.length; j++){ submitInputs[j].disabled = value; } } functi

我有一些代码,我想用它来验证文本字段中的电子邮件数量

  function lockSubmits(selector,value){

      var submitInputs = document.querySelectorAll(selector);

      for(var j = 0; j<=submitInputs.length; j++){

        submitInputs[j].disabled = value;
      }

  }

  function checkQuantity(tested,sign){

      var testedField = document.querySelector(tested);
      var mailCounter = 0;

      for(var i=0; i<testedField.value.length; i++){
        if(testedField.value[i] == '@'){
          mailCounter += 1;
        }
        return mailCounter;
      }

  }





  var eventField = document.querySelector('#tag_email_list');
  var alertCounter = false;




  eventField.addEventListener('input',function(){

      // var mailCounter = 0;

      // for(var i=0; i<testedField.value.length; i++){
      //   if(testedField.value[i] == '@'){
      //     mailCounter += 1;
      //   }
      // }

      checkQuantity('#tag_email_list','@');


     if((!alertCounter) && (mailCounter >= 999)){
      alert('<%= tt('tag.email_list_lock') %>');
      lockSubmits('input[type="submit"]', true);
      alertCounter = true;
     }

     if(mailCounter<= 999){
      lockSubmits('input[type="submit"]', false);
      alertCounter = false;
     }
  })

在检查mailCounter是否大于或等于999时,有什么建议吗?return mailCounter是否应返回mailCounter值?现在它返回了referenceError:mail Counter未定义

您需要将调用
checkQuantity的返回值分配给一个变量
mailCounter
的作用域限定在定义它的函数内,因此如果尝试引用它,将导致referenceError

var mailCounter = checkQuantity('#tag_email_list','@');

if(!alertCounter && mailCounter >= 999) {
    ...
}
同样,在第二个
if
语句中也需要这样做

if(mailCounter <= 999) { ... }

关于“将chec quantity调用的返回值赋给变量”的任何示例或单词,您是指在if语句中var zmienna=checkQuantity(args)和next check zmienna?我认为没有,因为我尝试了var checkQuantity=function(tested,sign){the code},但它仍然返回相同的错误OK,这是可行的,但现在mailCounter始终是一个,无论有多个“@”…我建议您针对mailCounter的问题提出一个新问题,因为它超出了当前问题的范围。很高兴你解决了这个未定义的问题。
if(mailCounter <= 999) { ... }
if(mailCounter < 999) { ... }