У меня проблема с кодом, который я привел ниже, и я новичок в Javascript и JQuery. То, что должен делать код, - это загрузка, которую он набирает для "непрочитанных уведомлений", затем помещает это число в div, называемый note_number. Затем он должен прочитать номер из notes_number и в зависимости от того, будет ли число больше 0, он отобразит div, называемый notes_signal.
Я делаю это при загрузке каждые 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";
}
}
Создайте функцию:
function checkNotes() {
$.get( "getnumber.php", function( data ) {
$( "#notes_number" ).text( data );
if ( parseInt(data) > 0 ) {
$('#notes_signal').show();
} else {
$('#notes_signal').hide();
}
});
}
И назовите его при загрузке, с интервалом и нажатием кнопки.
Я бы использовал .get
в вашем экземпляре
var load = $.get('getnumber.php');
$("#notes_number").load("getnumber.php");
?
$.get(...)
и что нужно делать с этим результатом.
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";
вместо
=""
удаляет значение, которое было установлено непосредственно для элемента, поэтому оно будет иметь значение, которое снова будет получено из правил matchig css.
#notes_number {display: none;}
который будет скрывать его в первом случае