如果document.URL包含数组元素,则更改变量值

时间:2014-02-10 23:24:03

标签: javascript jquery

我有一个显示通知的javascript / jquery函数。我想让这个功能显示不同的模式,如果它们不在x,y和z页面上。

这就是我试图实现这个目标的方式:

function display_alert(message, type, delay, mode)
{
    type    = (typeof type === "undefined") ? "danger" : type;
    delay   = (typeof delay === "undefined") ? 3000 : delay;
    mode    = (typeof mode === "undefined") ? 'normal' : mode;

    var current_location = document.URL;
    var home_locations = ['home', 'remote', 'zip'];

    for (var i = 0; i < home_locations.length; i++)
    {
        if (current_location.toString().indexOf(home_locations[i]) == -1)
        {
            // alert(home_locations[i]); return;

            mode = 'top';
            break;
        }   
    }

    ...

因此,如果document.URL不包含其中一个数组元素,那么我希望mode变量变为top

我认为这是一个简单的问题,但我不知道如何修复它。

2 个答案:

答案 0 :(得分:1)

您可以使用使用home_locations数组构建的正则表达式:

var home_regex = new RegExp('('+home_locations.join('|')+')');
// home_regex = /(home|remote|zip)/;
if (!home_regex.test(document.URL)) mode = 'top';

答案 1 :(得分:0)

你需要扭转循环中的逻辑......

var current_location = document.URL;
var home_locations = ['home', 'remote', 'zip'];

var found = false;

for (var i = 0; i < home_locations.length; i++)
{
    if (current_location.toString().indexOf(home_locations[i]) >= 0)
    {
        found = true;
        break;
    }   
}

if (!found) {
    mode = 'top';
}