【问题标题】:function return undefined value函数返回未定义值
【发布时间】:2018-06-27 13:17:59
【问题描述】:

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

  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;
     }
  })

我的麻烦是我的代码在线停止:

if((!alertCounter) && (mailCounter >= 999))

正是在检查 mailCounter 是否大于或等于 999 时,有什么建议吗?返回 mailCounter 是否应该返回 mailCounter 值?现在它返回了 referenceError: mail Counter is not defined

【问题讨论】:

    标签: javascript function dom return


    【解决方案1】:

    您需要将调用checkQuantity 的返回值分配给一个变量。 mailCounter 被限定在定义它的函数内,所以如果你试图引用它会导致一个referenceError。

    var mailCounter = checkQuantity('#tag_email_list','@');
    
    if(!alertCounter && mailCounter >= 999) {
        ...
    }
    

    同样,您需要在第二个 if 语句中执行相同的操作。

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

    顺便说一句,您确实意识到如果mailCounter 恰好是999,那么mailCounter &gt;= 999mailCounter &lt;= 999 的计算结果为true?可能想调查一下 - 在这种情况下,您的代码将禁用输入,然后立即取消禁用它们,因为两个 if 块都将被执行。也许您的意思是检查严格的不等式?

    if(mailCounter < 999) { ... }
    

    【讨论】:

    • 关于“将调用 chec Quanttity 的返回值分配给变量”的任何示例或词语?你的意思是 var zmienna = checkQuantity(args) 然后在 if 语句中检查 zmienna?
    • 我认为没有,因为我尝试了 var checkQuantity = function(tested,sign){ the code } 仍然返回相同的错误
    • 好的,这可以工作,但现在 mailCounter 始终为一,无论是否有多个 '@'...
    • 我建议您针对 mailCounter 的问题打开一个新问题,因为它超出了当前问题的范围。很高兴您解决了未定义的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多