2016-11-17 2 views
3

Я пытаюсь выяснить, почему блок else else не выполняется, хотя блок if будет выполняться, если условие выполнено i Я относительно новый для java-скрипта, но у меня есть опыт программирования, и я немного озадачен тем, почему это не так.Если ... Else, Else block не выполняется, когда условие if не удовлетворено

Это функция, которая вызывается на $ (документ) .ready:

function selectSchool() 
    { 
     alert("Selecting a School!" + sessionStorage.sCData); 
     if (!sessionStorage.sCData || sessionStorage === NULL) 
     { 
      alert("Its Empty!"); 
     } else { 
      alert("Its Not Empty!"); 
      //$('#schoolDropdown').val(sessionStorage.sCData); 
      //sessionStorage = NULL; 
      alert('Session Storage: ' + sessionStorage.sCData); 
     } 
     alert("Function finished"); 

    }; 

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

Заранее благодарим за любую помощь, которую вы можете дать.

+0

что вы получаете в первом предупреждении? – Deep

+0

* блок my else не выполняется, хотя блок if будет выполняться, если условие выполнено * - Это нормально. Блок 'Else' не будет выполняться, если условие' if' истинно – Weedoze

+1

изменить 'NULL' на' null'. Кроме того, sessionStorage никогда не будет null. –

ответ

3

Я бы переключил условие и установил подлинность sessionStorage, и если sCData также правдивый.

function selectSchool() { 
    alert("Selecting a School!" + sessionStorage.sCData); 
    if (sessionStorage && sessionStorage.sCData) { 
     alert("Its Not Empty!"); 
     alert('Session Storage: ' + sessionStorage.sCData); 
    } else { 
     alert("Its Empty!"); 
    } 
    alert("Function finished"); 
}; 
+0

Это лучшее решение. Но у него также есть проблема сбрасыванием «Неисправной ссылочной ошибки: sessionStorage не определено» в случае недоступности sessionStorage: 'alert (« Выбор школы! »+ SessionStorage.sCData); ' – connexo

+0

Спасибо за ответ, плохо попробуйте и дайте знать, как это происходит. – Terakin

+0

для совместимости смотрите здесь: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage # Browser_compatibility –

2

Прежде всего, в JavaScript нет ничего подобного NULL. JavaScript чувствителен к регистру.

Во-вторых, хранение сеанса никогда не будет null, поэтому условие sessionStorage == null всегда будет возвращать значение false.

Наконец, рабочий фрагмент кода:

function selectSchool() { 
 
    
 
    alert("Selecting a School!" + sessionStorage.sCData); 
 
    if (!sessionStorage.sCData) { 
 
    alert("Its Empty!"); 
 
    } else { 
 
    alert("Its Not Empty!"); 
 
    //$('#schoolDropdown').val(sessionStorage.sCData); 
 
    //sessionStorage = NULL; 
 
    alert('Session Storage: ' + sessionStorage.sCData); 
 
    } 
 
    alert("Function finished"); 
 
    
 
};

+1

Это не лучший подход к возможному отсутствию 'sessionStorage', поскольку в этом случае он будет бросать «Неточная ссылочная ошибка: sessionStorage не определен». – connexo

+0

@connexo Приведите пример, когда хранилище сеансов будет неопределенным. –

+0

В старых браузерах, которые его никогда не реализовывали. – connexo

1

NULL != null так заменить NULL с null. Лучше использовать не оператор, т. Е. !. Он проверяет, является ли строка empty, null or undefined. Кроме того, использование как

if (!sessionStorage.sCData || sessionStorage === null)

или

if (!sessionStorage.sCData || !sessionStorage)

пример:

(function selectSchool() 
 
    { 
 
     var some=""; 
 
     if (!some) 
 
     { 
 
      alert("Its Empty!"); 
 
     } else { 
 
      alert("Its Not Empty!"); 
 
      
 

 
     } 
 
     alert("Function finished"); 
 

 
    })()

+0

плохо попробуйте его, спасибо за быстрый ответ – Terakin

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