2015-09-14 3 views
0

У меня есть следующие функции Javascript:Простой Javascript функция показать DIV не работает

function checkConnection() { 
    $.ajax({ 
     url: 'php_scripts/checkconnection.php', 
     type: "POST", 
     success: function() { 
      document.getElementById('openOfflineDIV').style.display = 'none'; 
      console.log("connected"); 
     }, 
     error: function() { 
      document.getElementById('openOfflineDIV').style.display = 'block'; 
      //I have also tried: 
      document.getElementById('openOfflineDIV').style.display = 'inline'; 
      console.log("disconnected"); 
     } 
    }).complete(function() { 
     setTimeout(checkConnection, 1000); 
    }); 
} 

Целью этой функции является, чтобы проверить состояние подключения к Интернету каждую секунду. Если соединение активно, то div openOfflineDIV не должен быть виден, но если соединение потеряно, то div должен быть виден.

Этот код частично работает, что означает, что если я перейду на мой адрес веб-страницы с «/ # openOfflineDIV», добавленным в конец URL-адреса, страница загрузится с отображением div на экране, после чего оно исчезнет после второй раз, когда функция начинает работать (что означает, что функция закрывает div успешно, когда она понимает, что соединение активно).

Но вторая часть функции не работает, она не отображает div автоматически, когда интернет-соединение потеряно. Я пробовал как встроенные, так и блочные методы, но ни один из них не работает. Я очень смущен, так как функция, безусловно, может скрыть div успешно (что, я думаю, означает, что мой синтаксис для определения div правильный).

Это код модальной в моем HTML:

<div id="openOfflineDIV" class="modalOfflineDIVDialog"> 
    <div id="mfs"> 
     <div id="wrapper"> 
      <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
        <tr> 
         <td align="center" valign="middle" class="alerttextbig">You have been disconnected from the internet!</td> 
        </tr> 
       </table> 
      </div> 
     </div> 
</div> 

И это CSS для модального:

.modalOfflineDIVDialog { 
    position: fixed; 
    font-family: Arial, Helvetica, sans-serif; 
    top: 0; 
    right: 0; 
    bottom: 0; 
    left: 0; 
    background: rgba(0,0,0,0.8); 
    z-index: 11; 
    opacity:1; 
    -webkit-transition: opacity 400ms ease-in; 
    -moz-transition: opacity 400ms ease-in; 
    transition: opacity 400ms ease-in; 
    pointer-events: none; 
} 
.modalOfflineDIVDialog:target { 
    opacity:1; 
    pointer-events: auto; 
} 

.modalOfflineDIVDialog > div { 
    width: 760px; 
    height: 545px; 
    position: relative; 
    margin: 1% auto; 
} 

Как я сказал, что функция наполовину работает, консоль. журналы "connected" и "disconnected" отображаются в консоли правильно, и он может закрыть div успешно, но я не могу понять, почему он не будет показывать div автоматически, когда интернет-соединение будет потеряно.

Любые идеи о том, почему это не работает полностью, будут действительно оценены.

+1

Вы загружаете jquery из cdn? – Lal

+0

Возможный дубликат [JQuery Ajax - Как обнаружить ошибку сетевого подключения при создании вызова Ajax] (http://stackoverflow.com/questions/1730692/jquery-ajax-how-to-detect-network-connection-error-when- make-ajax-call) –

+0

Привет @lal У меня есть '' https: // ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'' включен в голову моей страницы. Это плохая практика? – Emily

ответ

1

В вашем CSS для скрытого блока добавил собственности opacity:0 так что вам нужно изменить его на 1, если вы хотите увидеть, что деление при изменении display Недвижимость

+0

Hi @mysterx Спасибо за ваш комментарий! Я обновил непрозрачность в CSS в моем вопросе. Функция теперь полностью работает! Однако есть одна проблема: теперь div появляется в начале загрузки страницы, он остается на экране около 5 секунд, пока не загрузится все остальное, затем оно исчезнет, ​​все равно будет загружаться в фоновом режиме, с глаз долой , так что пользователь не видит его, когда все элементы страницы находятся в процессе загрузки? Еще раз спасибо! – Emily

+0

Вы должны сделать этот div скрытым по умолчанию. Установить в CSS 'display: none;' для него – MysterX

+0

Привет @mysterx спасибо за ваш комментарий, оказывается, что проблема действительно была CSS! Большое спасибо! – Emily

0

Попробуйте

$('#openOfflineDIV').hide(); скрыть

и этот

$('#openOfflineDIV').show(); показать!

+0

Привет @sunil спасибо за ваш ответ, я изначально пробовал этот метод, но он не работал, console.logs написал правильно, но методы div-show-hide не работали. – Emily

0

Вы можете попробовать ниже код, чтобы показать/скрыть вместо style.display:

$('#openOfflineDIV').show(); 
$('#openOfflineDIV').hide(); 
+0

Привет @ rk3024 спасибо за ваш ответ, это был метод, который я изначально пытался, но это не сработало для меня, console.logs написал правильно, но div show-hide не работал. – Emily

+0

Попробуйте это, чтобы показать document.getElementById («запомнить»). Style.visibility = "visible"; и скрыть document.getElementById ("запомнить"). style.visibility = "hidden"; – rk3024

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