2

我正在寻找一种更简单的方法来处理这些多个 If Else 语句,有数百个。我猜最好只在 If Else 中使用另一个 For 循环,但请告诉我大家的建议,谢谢!

var hrefs = [];
var list = document.getElementsByTagName("a");
for (var i=0; i<list.length; i++) {
    var hey = list[i].href;
    hrefs.push(hey);
}

if(window.location == 'http://') {
    tileid = <?php echo $numposts.''; ?>;
} else if (window.location == hrefs[7]) {
    tileid = 0;
} else if (window.location == hrefs[8]) {
    tileid = 1;
} else if (window.location == hrefs[9]) {
    tileid = 2;
} else if (window.location == hrefs[10]) {
    tileid = 3;
} else if (window.location == hrefs[11]) {
    tileid = 4;
} else if (window.location == hrefs[12]) {
    tileid = 5;
} else if (window.location == hrefs[13]) {
    tileid = 6;
} else if (window.location == hrefs[14]) {
    tileid = 7;
} else if (window.location == hrefs[15]) {
    tileid = 8;
} else if (window.location == hrefs[16]) {
    tileid = 9;
} else if (window.location == hrefs[17]) {
    tileid = 10;
} else if (window.location == hrefs[18]) {
    tileid = 11;
} else {
    tileid = window.history.state.projid;
}
4

3 回答 3

4

请试试这个:

var flag = false;

if (window.location == 'http://') {
    tileid = <?php echo $numposts.''; ?>;
} else {
    for (var i = 7; i <= 18; ++i) {
        if (window.location == hrefs[i]) {
             tileid = i - 7;
             flag = true; break;
        }
    }
    if (!flag) tileid = window.history.state.projid;
}
于 2013-02-22T00:46:46.933 回答
0

没有测试过这个,我认为i<(list.length<18?list.length:18)可能是错误的。假设您不需要超过 18 个链接,它只是停止处理链接。

var hrefs = {};
var list = document.getElementsByTagName("a");
for (var i=0; i<(list.length<18?list.length:18); i++) {
    hrefs[list[i]] = i;
}

if (window.location == 'http://'( {
  tileid = <?php echo $numposts.''; ?>;
} else {
  if (!hrefs[window.location]) {
    tileid = window.history.state.projid;
  } else {
    tileid = hrefs[window.location] - 7;
  }
}
于 2013-02-22T00:58:40.517 回答
-1

你可以做一个switch语句。

switch(urlval){
    case 1:
     tileid = 1;
    break;

    case 2:
     tileid = 2;
    break;

    default:
     tileid = 0;
}
于 2013-02-22T00:48:08.117 回答