Javascript函数无法在加载时获取数据

时间:2013-09-19 21:19:47

标签: javascript jquery html css

我遇到了下面提供的代码问题,我是Javascript和Jquery的新手。代码应该做的是在加载时它为“未读通知”获取一个数字,然后将该数字放在名为notes_number的div中。然后它应该读取notes_number中的数字,并且根据数字是否大于0,它将显示名为notes_signal的div。

我是在加载时每隔5秒执行此操作,然后每按一次通知按钮。代码无法正常工作,因为在加载时它没有在notes_number div中放置一个数字。其他事件也不起作用。有一次我认为它有效但现在我无法弄清楚是什么了。这是代码:

//THIS IS TO CHECK WHEN THE PAGE COMES UP
$("#notes_number").load("getnumber.php");

if(document.getElementById("notes_number").innerHTML > 0){
var elem = document.getElementById("notes_signal");
elem.style.display = "";
}

if(document.getElementById("notes_number").innerHTML == 0){
var elem = document.getElementById("notes_signal");
elem.style.display = "none";
}


//THIS IS TO CHECK EVERY 5 SECONDS
window.setInterval(function(){
$("#notes_number").load("getnumber.php");

if(document.getElementById("notes_number").innerHTML > 0){
var elem = document.getElementById("notes_signal");
elem.style.display = "";
}

if(document.getElementById("notes_number").innerHTML == 0){
var elem = document.getElementById("notes_signal");
elem.style.display = "none";
}
}, 5000);



//THIS IS TO CHECK WHEN THE BUTTON IS PRESSED
function toggleDiv(divId) {
   $("#"+divId).show();

$(document).ready(function(){
   $("#myContent").load("getnotes.php?page=<? echo $page; ?>");
});



$("#notes_number").load("getnumber.php");

if(document.getElementById("notes_number").innerHTML > 0){
var elem = document.getElementById("notes_signal");
elem.style.display = "";
}

if(document.getElementById("notes_number").innerHTML == 0){
var elem = document.getElementById("notes_signal");
elem.style.display = "none";
}
}

3 个答案:

答案 0 :(得分:2)

创建一个函数:

function checkNotes() {
    $.get( "getnumber.php", function( data ) {
        $( "#notes_number" ).text( data );
        if ( parseInt(data) > 0 ) {
            $('#notes_signal').show();
        } else {
            $('#notes_signal').hide();
        }
    });
}

并在加载,间隔和按钮点击时调用它。

答案 1 :(得分:0)

我会在你的实例中使用.get

var load = $.get('getnumber.php');

答案 2 :(得分:0)

Javascript是异步的,这意味着

if(document.getElementById("notes_number.....将在

之前运行

$("#notes_number").load("getnumber.php");已完成。

所以你必须使用这样的回电:

 $("#notes_number").load("getnumber.php",function(){
     if(document.getElementById("notes_number").innerHTML > 0){
        var elem = document.getElementById("notes_signal");
        elem.style.display = "";
        }

        if(document.getElementById("notes_number").innerHTML == 0){
        var elem = document.getElementById("notes_signal");
         elem.style.display = "none";
       }
  });

此外,我不确定这是否有效elem.style.display = "";

尝试使用'elem.style.display = "block";