【问题标题】:Issue with Javascript boolean valuesJavascript布尔值问题
【发布时间】:2013-07-18 19:46:07
【问题描述】:

我编写了一个小脚本来重新创建 Chrome 地址栏,其中我的代码检查任何域扩展名(.com、.edu 等)的输入,并在找到扩展名时将布尔标志设置为 true。 然后它检查标志并根据结果打开网站或将其作为查询发送到谷歌。 此外,如果它是一个网站,它会检查字符串是否包含 http:// 和 www。如果没有,则在使用 Window.Open() 打开目标之前将其添加到字符串中。

这里有什么问题?

function openSite(){
     var domain_extensions = [".aero", ".asia", "...All Other Extensions...", ".zr", ".zw"];

        var isSite = false;

        var userIn = document.getElementById('in_field').value; //Retrieves Textbox code

        for (var i=0; i < domain_extensions.length; i++)
            if (userIn.search(domain_extensions[i]) !==-1)
                isSite = true;
                        //Checks against the array of extensions

        if (isSite === true){
            if (userIn.search("http://") === -1 || userIn.search("https://") === -1)
                {if(userIn.search("www.") === -1)
                    userIn = "http://www." + userIn;
                 else
                    userIn = "http://" + userIn;                        
                }

                window.open(userIn, '_blank');
                //if extension is found, open website
                        //if qualifier http:// or https:// and/or www. not found, append and open website               
            }

        else{
                var str = encodeURI("http://www.google.com/search?q=" + userIn);
                window.open(str, '_blank');

            } //Searches query for common extensions; if not found search google
    }

【问题讨论】:

  • 怎么了?为什么 JavaScript 的“真实性”很重要?
  • 你为什么使用http:backslashbackslash 而不是http://?此外,您可能希望在 for 循环中使用 break;,尽管我认为这不会解决任何问题
  • 如果你添加了一个break,一定要同时添加花括号...
  • @Ian 哦该死的!这解决了我的一些问题。现在网站可以工作了。
  • @contactmatt 即使我输入了一个非站点,真相块仍然执行。

标签: javascript arrays boolean


【解决方案1】:

我相信这是您使用search 函数的问题。这个函数接受一个正则表达式作为它的参数。 . 字符在正则表达式中很特殊,可以匹配任何字符。

例如:

var test = "blasdfahsadfcomasdfasd";
console.log(test.search(".com")); // prints 11

. 前面加上反斜杠以覆盖此行为:

var test = "blasdfahsadfcomasdfasd";
console.log(test.search("\\.com")); // prints -1

此外,如果您只想检查字符串末尾,请在字符串末尾添加 $ 符号,如下所示:

var test = "blasdfahsadf.comasdfasd";
console.log(test.search("\\.com$")); // prints -1; prints 12 w/o the $

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 2015-09-17
    • 2019-10-06
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    相关资源
    最近更新 更多