2016-04-28 3 views
0

Это приглашение отлично работало, пока я не обновил некоторые другие javascript. Я не знаю, как я это испортил. Эта функция объявляется в теге body для запуска «onload».Uncaught TypeError: Невозможно прочитать свойство 'toLowerCase' из null

function funcPrompt() { 
    var answer = prompt("Are you a photographer?", "Yes/No"); 
    answer = answer.toLowerCase(); 

if (answer == "yes") { 
    alert('Excellent! See our links above and below to see more work and find contact info!'); 
} 
else if(answer == "no") { 
    alert('That is okay! See our links above and below to learn more!'); 
} 
else if(answer == null || answer == "") { 
    alert('Please enter an answer.'); 
    funcPrompt(); 
} 
else { 
    alert('Sorry, that answer is not an option'); 
    funcPrompt(); 
} 
} 

Теперь неожиданно я получаю эту ошибку, и приглашение не появится.

ответ

2

Если нажать на Отменить, запрос будет возвращать null и один не может применить toLowerCase на null (Вызовет исключение!)

Добавить условие answer===null перед всеми другими условиями и return для останавливает выполнение function

function funcPrompt() { 
 
    var answer = prompt("Are you a photographer?", "Yes/No"); 
 
    if (answer === null || answer === "") { 
 
    alert('Please enter an answer.'); 
 
    funcPrompt(); 
 
    return; 
 
    } 
 
    answer = answer.toLowerCase(); 
 
    if (answer == "yes") { 
 
    alert('Excellent! See our links above and below to see more work and find contact info!'); 
 
    } else if (answer == "no") { 
 
    alert('That is okay! See our links above and below to learn more!'); 
 
    } else { 
 
    alert('Sorry, that answer is not an option'); 
 
    funcPrompt(); 
 
    } 
 
} 
 
funcPrompt();

0

В вашем случае лучше использовать подтверждающий вместо быстрого

function funcConfirm() { 
 
    var answer = confirm("Are you a photographer?"); 
 

 
    if (answer === true) { 
 
    alert('Excellent! See our links above and below to see more work and find contact info!'); 
 
    } else { 
 
    alert('That is okay! See our links above and below to learn more!'); 
 
    } 
 
} 
 

 
funcConfirm();

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