id为' post_url'的字段的值是 http://www.example.com/ 。对于大于-1
的任何内容,不应该为JavaScript返回true吗?
alert('1a = '+id_('post_url').value.indexOf('http:'));// 0
alert('1b = '+id_('post_url').value.indexOf('http:') > -1);// false
alert('2a = '+id_('post_url').value.indexOf('www.'));// 7
alert('2b = '+id_('post_url').value.indexOf('www.') > -1);// false
答案 0 :(得分:18)
您正在比较字符串和数字。在进行indexOf
比较之前,您已将-1
(我假设为>
)的结果连接到一个字符串。这相当于NaN > -1
。
"1b-1" > -1 // => false
答案 1 :(得分:4)
检查Operator Precedence 添加/字符串连接优先于关系比较。
您的代码需要一些括号/分组操作符来解决这个问题:
alert( '1b = ' + ( id_('post_url').value.indexOf('http:')>-1 ) ); // 1b = true
答案 2 :(得分:3)
您正在尝试将字符串连接计算为数字,该数字返回false。
'2b'+id_('post_url').value.indexOf('www.')>-1
...使用操作顺序,将字符串2B
添加到id_('post_url').value.indexOf('www.')
因此,将整个事物作为字符串进行转换,并评估字符串是否大于-1。
以下是您需要编写警报的方法。
alert(id_('post_url').value.indexOf('www.')>-1);
那应该提醒'真实'。
答案 3 :(得分:1)
'2b'+id_('post_url').value.indexOf('www.')
您正在为索引添加2b,因此它不会保持整数,但会将值作为字符串2b +您拥有的任何索引。这就是你观察的原因。