xxx 함수 is not a function에 대한 문제

3698 단어

자바스크립트 함수 not a function 문제


핵심지식:this지향문제


상술한 화제의 기초는 스스로 머리를 고쳐 주십시오
document.getElementById('timeTips').addEventListener('click',function (){
          var mobileCodeBtn= document.getElementById('timeTips');
          var mobile = $("#mobile").val();

          if(mobile == ''){
             return WST.msg(' ');
          }
          var phon = /^1[3|4|5|7|8]\d{9}$/;
          $.post(WST.U('home/users/check'),{mobile:mobile},function(data,textStatus){
              if (data.status == -1) {
                  return WST.msg(' ');
              }else if(data.status == 1){
                  // alert(data.status);exit();
                  if ( mobile && mobile != null && phon.test(mobile)){
                      ruleCode(this,mobile,mobile+"-"+num);
                      remoeDis(this);
                  }
              }
          });
      });
  • 이 코드들은 브라우저에서 실행한 후에 틀림없이 오류를 보고해야 한다. 오류 코드는 다음과 같다
  • editPass.html:690 Uncaught TypeError: btn.setAttribute is not a function
        at removeDis (editPass.html:690)
        at Object.success (editPass.html:744)
        at j (jquery.min.js?v=1.4.1_170330_:2)
        at Object.fireWith [as resolveWith] (jquery.min.js?v=1.4.1_170330_:2)
        at x (jquery.min.js?v=1.4.1_170330_:5)
        at XMLHttpRequest.b (jquery.min.js?v=1.4.1_170330_:5)
    

    btn.setAttribute is not a function at removeDis(editPass.html:690)는 주로 이 줄의 오류를 보며, xxx is not a function가 바로 주인입니다.
    오류 원인:
  • 여기 ruleCode(this,mobile,mobile+"-'+num) 함수와remove(this)의this에 나와있습니다
  • 주로 이 코드에서 시작해야 한다$.post(WST.U('home/users/check'),{mobile:mobile},function(data,textStatus)

  • 다음은 jQuery의 $를 찾습니다.post () 이벤트 소스:
    Query.each( [ "get", "post" ], function( i, method ) {
        jQuery[ method ] = function( url, data, callback, type ) {
    
            // Shift arguments if data argument was omitted
            if ( jQuery.isFunction( data ) ) {
                type = type || callback;
                callback = data;
                data = undefined;
            }
    
            // The url can be an options object (which then must have .url)
            return jQuery.ajax( jQuery.extend( {
                url: url,
                type: method,
                dataType: type,
                data: data,
                success: callback
            }, jQuery.isPlainObject( url ) && url ) );
        };
    } );
    

    이것은 aax 대상을 되돌려주는 것을 발견할 수 있습니다. 이로 인해this 지향 오류가 발생했습니다. 해결 방법은 $입니다.post () 이벤트 전에this 바늘을 변수로 저장합니다.변경된 코드는 다음과 같습니다.
    document.getElementById('timeTips').addEventListener('click',function (){
              var mobileCodeBtn= document.getElementById('timeTips');
              var mobile = $("#mobile").val();
              var that = this;
    
              if(mobile == ''){
                 return WST.msg(' ');
              }
              var phon = /^1[3|4|5|7|8]\d{9}$/;
              $.post(WST.U('home/users/check'),{mobile:mobile},function(data,textStatus){
                  if (data.status == -1) {
                      return WST.msg(' ');
                  }else if(data.status == 1){
                      // alert(data.status);exit();
                      if ( mobile && mobile != null && phon.test(mobile)){
                          ruleCode(that,mobile,mobile+"-"+num);
                          remoeDis(that);
                      }
                  }
              });
          });
    
  • 보충점:this는 상하문에 따라 현재 대상을 찾습니다 (개인 프로그래밍 이해)


  • 이상 공유에 오류가 있으면, 여러분은 바로잡고, 바로잡고, 도끼하여 주십시오

    좋은 웹페이지 즐겨찾기