无法读取属性'长度'匹配当前window.location.href

时间:2017-09-19 11:30:52

标签: javascript jquery

大家好,我正在尝试匹配一个网址,并且根据网址中是否存在ID,我会添加一个会触发覆盖的类。

如果我导航到最后添加了以下内容的网址:?active-overlay=jj-instagram-feed-widget-2,我会触发叠加层,一切正常。

但是,如果我直接导​​航到没有active-overlay网址参数的网页,我会收到以下控制台错误:

Cannot read property 'length' of null.

我猜错了,因为它无法在网址中找到active-overlay

我怎样才能解决这个问题?

这是我的代码:

var url = window.location.href;
if (url.match("active-overlay").length > 0) {
    var activeOverlayID = url.match(/=(.+)/)[1];
    $('#' + activeOverlayID + '').find('.instagram-feed__image').siblings().addClass('popup');
}

2 个答案:

答案 0 :(得分:1)

您只需在该条件检查之前检查null

 url.match("active-overlay") !== null

所以你的代码将是,

var url = window.location.href;
var matchUrl = url.match("active-overlay");
if (matchUrl !== null && matchUrl.length > 0) {
    var activeOverlayID = url.match(/=(.+)/)[1];
    $('#' + activeOverlayID + '').find('.instagram-feed__image').siblings().addClass('popup');
}

因此,如果matchUrlnull,则该语句将变为false,并且不会转到下一个&&条件。作为'&&'如果任何前述条件为false,则结果为false。

答案 1 :(得分:0)

您可以尝试使用此

if (url.match("active-overlay")!=null && url.match("active-overlay").length > 0) {
    var activeOverlayID = url.match(/=(.+)/)[1];
    $('#' + activeOverlayID + '').find('.instagram-feed__image').siblings().addClass('popup');
}
相关问题