0

我正在尝试根据窗口哈希进行一些操作,转到div id锚点。

<div id="#A1"></div>
<div id="#A2"></div>
<div id="#A3"></div>
<div id="#A4"></div>
......
<div id="#B1"></div>

和JS

    function myWay(){
    //do something  
    }

    if(document.location.hash == "A1"){
             myWay();   
    }
    if(document.location.hash == "A2"){
             myWay();   
    }
    if(document.location.hash == "A3"){
             myWay();   
    }
    .......

我的问题是,如果我有超过 30 个锚点,我必须if(document.location.hash == "#anchor")在我的 JavaScript 上放置超过 30 个。有没有办法搜索和匹配做类似的事情

if (document.location.hash == (this anchor on the page)){
         myWay();
}else{
    something else;
}
4

2 回答 2

1

在这种情况下,由于您的 ID 与特定模式匹配,请使用正则表达式:

if (document.location.hash.match(/[A-C][1-4]/)) { ... }

它将匹配 A、B 或 C,后跟从 1 到 4 的数字。

如果您的 ID 没有模式,请尝试使用循环:

var ids = ['valid', 'ids', 'etc...'], valid = false;
for (var i = 0; i < ids.length; i ++) {
    if (yourId === ids[i]) valid = true;
}
if (valid) { ... }
于 2013-06-14T01:28:56.493 回答
1

使用一个简单的数组:

arr = ["A1","A2", /* ... */ "Z9"];
if ($.inArray(location.hash, arr) > -1) { 
// or use arr.indexOf(location.hash) if you don't care about old browsers
   myWay();
};
于 2013-06-14T01:34:26.233 回答