Так что это похоже на простой вопрос, но следующий код работает, но не так, как я ожидаю. Это пример из онлайн-проверки видео на http в поле. Я знаю, что есть другие вопросы о «правильном» способе использования indexOf, но мой вопрос в том, почему этот код работает.indexOf значение возвращаемого значения
document.ucDivIntake.website.onchange = function(){
var theURL = document.ucDivIntake.website.value;
if(theURL.indexOf("http")){
document.getElementById('errorMessage_website').innerHTML = "need http";
document.getElementById('errorMessage_website').style('display', 'inline');
}
}
Это сообщение об ошибке отображается, если http отсутствует. Если http не найден indexOf, он возвращает -1. Я подтверждаю, что в моем отладчике. Таким образом, это не приведет к условию и не будет вводить код условия. Похоже, что я пропустил что-то основное.
так что даже если он получает -1, он является «истинным» и отвечает условию, там условие будет выполнено, если только http не находится в начале строки? Это объясняет результат. Я думал, что -1 будет «ложным». – RGB
@ RGB да точно. Значения «ложь» в JavaScript - это «0», «NaN», «», «null», «undefined» и, конечно, «false». – Pointy