Jquery Uncaught TypeError:无法读取属性'替换'未定义的

时间:2015-08-26 16:00:50

标签: javascript jquery ajax

任何人都可以告诉我为什么会收到此错误:

未捕获的TypeError:无法读取属性'替换'未定义的

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

1 个答案:

答案 0 :(得分:4)

我认为这个错误是由两种情况中的一种引起的,基于上面给出的信息:

    在DOM

    中找不到
  1. $('#NewPostBody) 找到

  2. $('#NewPostBody)但没有类属性。

  3. 这可以使用以下方法解决:

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

    三元运算符以及 truthy / falsy 逻辑应该导致返回的类或空字符串。无论哪种方式,都可以安全地调用pid.replace('post-t', '')而不会导致错误。