document.location.hash等于ID名称

时间:2013-06-14 01:26:43

标签: javascript jquery

我试图做一些操作取决于窗口哈希,转到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个锚,我必须在我的JavaScript上放置30 if(document.location.hash == "#anchor")。有没有办法搜索和匹配像

这样的东西
if (document.location.hash == (this anchor on the page)){
         myWay();
}else{
    something else;
}

2 个答案:

答案 0 :(得分: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) { ... }

答案 1 :(得分: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();
};