2

これらの複数のIfElseステートメントを処理するためのより簡単な方法を探しています。数百あります。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 に答える