javascript如果失败

时间:2012-09-05 00:01:39

标签: javascript html5 dom if-statement

我没有看到我的错误在哪里,如果有任何

<!DOCTYPE html> <html> <head>
        <script type="text/javascript">
            //http://stackoverflow.com/questions/10251149/using-javascript-to-detect-google-chrome-to-switch-css
            //provera brosera
            function check_chrome_ua() {
                var ua = navigator.userAgent.toLowerCase();
                var is_chrome = /chrome/.test(ua);
                alert("func check_chrome_ua() " + is_chrome);
                return is_chrome;
            }
            //promena nadpisa
            function check() {
                //alert("check1");

                var check = check_chrome_ua();
                alert("var check " + check + "; func check_chrome_ua() " + check_chrome_ua());

                if (check == "false") {
                    alert("change text");
                    document.getElementById("opomena").style.color = "red";
                    document.getElementById("opomena").innerHTML = 'Warning you are not using Google Chrome';
                }
            }
        </script>
        </head>
        <body onmousemove="check()">
    <div id="opomena">Thank you for using Google Chrome.</div>

</body>
 </html>

谷歌Chrome弹出窗口弹出窗口说的是真的,在Firefox上说错误 弹出“更改文本”不会在Firefox中显示,因此var check为false。

提前感谢您的建议

2 个答案:

答案 0 :(得分:4)

更改

if (check == "false") {

if (!check) {

if (check == false) {

如果你真的想检查布尔值false

您在test调用的正则表达式/chrome/.test(ua)方法返回一个布尔值,但check == "false"正在将该布尔值与字符串进行比较。两者不相等。

在JavaScript中,==在将字符串与对象进行比较时是permissive,但不像Perl的eq运算符那样宽松。

  • 0 == false
  • false == false
  • "false" == [false]
  • false != "false"
  • 0 != "false"

尝试使用!=====这是一个很好的习惯,它们是定义良好的运算符来比较原始值。

答案 1 :(得分:1)

你必须检查布尔值false,而不是“false”(它是一个字符串)。

只有if (!check)就足够了(或更详细的版本if (check == false))。