如何处理未定义的查询变量

时间:2011-08-25 18:18:15

标签: javascript jquery

我有以下内容在我的应用中启动对话框:

$('.dialogDo').live('click', function() {

    // Do we have a custom width?
    var width = this.search.match(/width=(\d+)/)[1];
    if (width) {
        dialogDo(this.href, width);
    }
    else {
        dialogDo(this.href, 480);
    }

    return false;
});

如果在href中定义了触发上述单击功能的宽度,则此方法可以正常工作。问题是如果未定义宽度则会中断。如果仍然保持使用宽度的功能,如何处理未定义的宽度?

由于

3 个答案:

答案 0 :(得分:2)

一种选择是使用默认宽度。

var matched = this.search.match(/width=(\d+)/);
var width = matched ? matched[1] : DEFAULT_WIDTH;

编辑 - 如果没有匹配,匹配可以返回null,并且您不能索引为null。 (感谢@Chris)

答案 1 :(得分:2)

如果javascript match函数不匹配则返回null,如果是,则返回结果数组。因此,在使用[1]对其进行索引之前,您需要检查结果是否实际上是一个数组。例如:

var width = this.search.match(/width=(\d+)/);
if (width) {
    dialogDo(this.href, width[1]);
}
else {
    dialogDo(this.href, 480);
}

答案 2 :(得分:0)

试试这个

$('.dialogDo').live('click', function() {

    // Do we have a custom width?
    var width = this.search.match(/width=(\d+)/)[1];
    if (!isNaN(width)) {
        dialogDo(this.href, width);
    }
    else {
        dialogDo(this.href, 480);
    }

    return false;
});