我试图做一些操作取决于窗口哈希,转到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;
}
答案 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();
};