indexOf返回值条件

时间:2015-01-07 20:23:37

标签: javascript

所以这看起来像一个简单的问题,但下面的代码可以工作但不像我期望的那样 这是来自在线视频检查字段中的http的示例。我知道还有其他关于使用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不存在,这会显示错误消息。如果indexOf找不到http,则返回-1。我确认在我的ide调试器中。那么这会使条件失败并且不输入条件代码。好像我错过了一些基本的东西。

4 个答案:

答案 0 :(得分:1)

.indexOf()函数返回一个数字,而不是布尔值。数值将大于或等于零,这意味着如果“http”出现在搜索字符串的开头,结果将为0,测试将失败。

最明确的做法是明确比较:

if (theURL.indexOf("http") > -1)

答案 1 :(得分:1)

如果

indexOf位于字符串的开头,则返回零。由于零是" falsy",因此不符合if条件。

应该是:

if(theURL.indexOf("http") >= 0)

答案 2 :(得分:0)

在javascript中如果([数值])将始终返回true,如果数字不是0

如果为0则为假。

答案 3 :(得分:0)

indexOf将返回字符串在目标字符串中的位置。如果这是在位置0,那么这将评估为“假”'因此失败了。

同样,如果它不存在,它将返回-1 - 也是假的。