0

我对下面提供的代码有疑问,而且我是 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";
}
}
4

3 回答 3

2

创建一个函数:

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

并在加载、间隔和按钮单击时调用它。

于 2013-09-19T21:39:33.503 回答
0

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

var load = $.get('getnumber.php');
于 2013-09-19T21:23:40.443 回答
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";

于 2013-09-19T21:36:15.800 回答