Div ID 存在但未被 jQuery 识别

Div with id exists but not recognised by jQuery

我有一个页面每 5 秒将另一个页面加载到 div。 我使用 jQuery 将其加载到 document.ready 上,这有效但在调用 setInterval 函数时不会每 5 秒重新加载一次。 我收到错误 "Cannot read property 'load' of null"

<div id="wallboard"></div>

<script type="text/javascript">     
    $(document).ready(function(){
     //Put in initial data THIS WORKS
     $('#wallboard').load('refresh_wall2_test.php'); 

        //Refresh wallboard div every 5 seconds THIS DOESN'T WORK
        $(function(){ 
            window.setInterval(
            function(){                     
                $('#wallboard').load('refresh_wall2_test.php'); 
            } ,5000);
        });
    });
</script>

尝试

$(function(){ 
    $('#wallboard').load('refresh_wall2_test.php'); 
    window.setInterval(
        function(){                     
            $('#wallboard').load('refresh_wall2_test.php'); 
        } ,5000);
    });
})();

在 document.ready 之外定义函数并在其中调用 setInterval。

$(document).ready(function(){
    setInterval(foo(page), 5000);
});
var foo = function(page) {
    $('#wallboard').load(page);
};

这非常适合我。我把你的 setInterval 函数放在一个变量上,所以如果需要,你可以 clearInterval

$(document).ready(function () {
        "use strict";
        
        // Load the window on ready...
        $('#wallboard').load('home.php');

        //Refresh wallboard div every 5
        window.reloadDiv = window.setInterval(
            function () {
                $('#wallboard').load('refresh_wall2_test.php');
        }, 5000);
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wallboard"></div>

首先您不需要 setInterval。您需要做的就是等待第一次加载完成,在完成回调中,执行 setTimeout 以设置的延迟重新加载 div。希望对您有所帮助。

$(document).ready(function() {
    //Store the reference
    var $elem = $('#wallboard');
    //Create a named self executing function
    (function loadPage() {
        $elem.load('refresh_wall2_test.php', function() {
            //When the request is complete, do a timeout which calls the function again.
            window.setTimeout(function() {
                loadPage();
            }, 5000);
        });
    }());
});