Функция Javascript для изменения стиля Div

0

У меня есть сценарий javascript, который получает количество уведомлений из php файла, а затем отображает номер в div в коде.

<script>
//DISPLAY NUMBER OF UNREAD NOTIFICATIONS AND UPDATE EVERY 5 SECONDS
window.setInterval(function(){

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

}, 5000);

//WHEN THE BUTTON IS PRESSED THIS HAPPENS
function toggleDiv(divId) {
   $("#"+divId).show();
//GET THE NOTIFICATIONS 
$(document).ready(function(){
   $("#myContent").load("getnotes.php?page=<? echo $page; ?>");
});

//RESET THE NUMBER OF UNREAD NOTIFICATIONS
$(document).ready(function(){
   $("#notes_number").load("getnumber.php");
});


}

</script>

<div id='notes_number'> </div>

Номер находится в значке в форме колокола, а когда число превышает 9, оно становится неактивным. Я бы хотел, чтобы он был установлен в <div id='notes_number' style='right: 30px;'></div> когда число превышает 9.

Проблема, с которой я сталкиваюсь, я не знаю, как получить число в переменной php, поэтому я могу сделать оператор if else следующим образом:

if ($thenumber <= "9") {
echo "<div id='notes_number'> </div>";
}
else {
echo "<div id='notes_number' style='right: 30px;'></div>";
}

КОД ИСПОЛЬЗУЕТСЯ НЕДАВНО:

window.setInterval(function(){
    $("#notes_number").load("getnumber.php");

    var value = parseInt($('#notes_number').text());

    if(value > 9){
    $('#notes_number').css('right','30px');
    }
}, 5000);

3 ответа

2
Лучший ответ

В HTML внутри колокола всегда просто поставить <div id='notes_number'></div>, а затем вы можете загрузить число в вашей JavaScript и добавить стиль с помощью JQuery (если число превышает 9) следующим образом: $('#notes_number').css('right','30px');

  • 0
    Я отредактировал свой пост, чтобы добавить код, который вы упомянули, но он не работает. есть идеи?
  • 0
    @ user2362601 Javascript работает для меня, возможно, CSS не делает то, что вы ожидаете? Я создал пример jsfiddle, чтобы вы могли его увидеть: fiddle Я также добавил абсолютную позицию css в div, чтобы вы могли видеть разницу в стиле и когда он меняется в каждом интервале.
0

Это можно решить на уровне JavaScript. Вместо использования .load попробуйте использовать .get для проверки значения, а затем соответствующим образом назначьте стили.

window.setInterval(function(){

    $.get("getnumber.php", function(data) {

        $("#notes_number").val(parseInt(data,10));

        if(parseInt(data,10) > 9) {
            $("#notes_number").css('right','30px');
        } else {
            $("#notes_number").css('right','0');
        }

    });

}, 5000);
  • 0
    Это не отображать номер на всех. Можете ли вы отредактировать код, чтобы разрешить отображение номера?
  • 0
    получил номер для отображения. Код не перемещает число, если я иду от 5 уведомлений до 10 уведомлений. Если при загрузке страницы было 10 уведомлений, то она перемещается, но если их меньше, она выглядит как обычная и не будет двигаться после получения 10 уведомлений.
Показать ещё 1 комментарий
0

Вы можете использовать одну и ту же надпись:

<div id='notes_number'> </div>

то в вашем jquery вы можете получить значение:

var value = parseInt($('#notes_number').text());

и добавьте класс, если он превышает 9

if(value > 9){
    $('#notes_number').addClass('largeNumber');
}

и пусть CSS позаботится о стиле, а не использует встроенные стили через JS:

.largeNumber{
    right: 30px;
}
  • 0
    Это не помогло. Он держал номер в том же месте.
  • 0
    Я вижу, я просто использовал стили, которые, как вы сказали, вы хотели иметь, предполагая, что они уже работают, и сосредоточившись на JS. Javascript, который я использовал, должен работать, но стили должны быть изменены по сравнению с тем, что вы хотели. Вам может понадобиться добавить положение: абсолютное или относительное, чтобы оно заработало, в зависимости от уже используемых стилей. Трудно исправить это, не видя этого в действии.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню