2015-08-26 8 views
5

Chiunque può dirmi perché sto ottenendo questo errore:Jquery Uncaught TypeError: Impossibile leggere la proprietà 'sostituire' di indefinito

Uncaught TypeError: Impossibile leggere la proprietà 'sostituire' di indefinito

function checkNewPost(x) { 
     var pid = $('#NewPostbody').attr('class'); 
     if(pid === 'post-t') { 
      setTimeout(checkNewPost, <?php echo $p_id; ?>); 
     } else { 
      $.ajax({ 
       type: "POST", 
       url: "/html_postReply.php", 
       data: "pid="+pid.replace('post-t', '')+"&type=1", 
       success: function(html) { 
        if(html) { 
         $('.tekin').append(html); 
         jQuery("span.timeago").timeago(); 
         $(".tekin").scrollTop($(".tekin")[0].scrollHeight); 
        } 
        if(!x) { 
         setTimeout(checkNewPost, <?php echo $p_id; ?>); 
        } 
       } 
      }); 
     } 
    } 
    checkNewPost(); 
+2

Significa solo che 'pid' è' indefinito'. – Pointy

+0

Se è possibile utilizzare un fallback (ad esempio la stringa vuota), è possibile utilizzare l'operatore '||': 'var pid = $ ('# NewPostbody'). Attr ('classe') || ''; '. – Xufox

+1

Ti opporresti se avessi modificato il tuo titolo e i tag? Questo onestamente non ha nulla a che fare con jQuery. È un messaggio di errore JavaScript standard causato da un valore 'indefinito' ... – War10ck

risposta

4

credo che questo errore è causato da uno dei due scenari, sulla base delle informazioni di cui sopra:

  1. $('#NewPostBody) è non essere trovato nel DOM

  2. $('#NewPostBody) è stato trovato ma non ha attributo di classe.

questo può essere risolto utilizzando il seguente metodo:

var pid = ($('#NewPostBody').length && $('#NewPostBody').attr('class')) 
    ? $('#NewPostBody').attr('class') 
    : ""; 

L'operatore ternario insieme truthy/falsy logica dovrebbe comportare sia la classe viene restituito o una stringa vuota. In entrambi i casi, è possibile chiamare in modo sicuro pid.replace('post-t', '') senza provocare un errore.

+0

War10ck la tua risposta ha risolto il mio problema..Io non sono chiaro capito dare informazioni su questa risposta. – praveenkumar

Problemi correlati