2013-09-19 7 views
0

У меня проблема с кодом, который я привел ниже, и я новичок в Javascript и JQuery. То, что должен делать код, - это загрузка, которую он набирает для «непрочитанных уведомлений», затем помещает это число в div, называемый note_number. Затем он должен прочитать номер из notes_number и в зависимости от того, будет ли число больше 0, он отобразит div, называемый notes_signal.Функции Javascript, не получающие данные при загрузке

Я делаю это при нагрузке каждые 5 секунд, а затем всякий раз, когда нажимается кнопка уведомлений. Код не работает, потому что при загрузке он не помещает число в div notes_number. Кроме того, другие случаи не работают. В какой-то момент я подумал, что это работает, но теперь я не могу понять, что случилось. Вот код:

//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"; 
} 
} 

ответ

2

Создание функции:

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

И называть его нагрузкой, с интервалом и по нажмите кнопку.

+0

Есть ли способ скрыть #notes_signal автоматически и показать его при необходимости? Потому что прямо сейчас он будет отображаться полсекунды, тогда код ударит, чтобы скрыть его. Спасибо за помощь! – user2362601

+1

в вашем CSS положить '#notes_number {display: none;}', который скроет его в первом экземпляре – Vector

+1

Создать правило CSS '#notes_signal {display: none}' – untitled

0

Я хотел бы использовать .get в вашем экземпляре

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

Вы имеете в виду вместо '$ (" # notes_number "). Load (" getnumber.php ");'? – user2362601

+0

Поскольку проблема вопроса заключается в том, что запрос является асинхронным, вы должны объяснить, что возвращает '$ .get (...)' и что должно быть сделано с этим результатом. –

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"; вместо

+0

'=" "' удаляет значение, которое было установлено непосредственно элементу, поэтому оно будет иметь значение, которое снова выходит из правил css matchg. –

Смежные вопросы