If-Else语句中循环的JavaScript
我正在寻找一种更简单的方法来处理这些多条If-Else语句,共有几百条。我猜最好在If-Else中使用另一个For循环,但请告诉我你们的建议,谢谢If-Else语句中循环的JavaScript,javascript,Javascript,我正在寻找一种更简单的方法来处理这些多条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 ==
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;
}
var hrefs=[];
var list=document.getElementsByTagName(“a”);
对于(var i=0;i请尝试以下方法:
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;
}
var标志=false;
如果(window.location=='http://'){
蒂莱德=;
}否则{
对于(var i=7;i您可以执行switch语句
switch(urlval){
case 1:
tileid = 1;
break;
case 2:
tileid = 2;
break;
default:
tileid = 0;
}
没有对此进行测试,我认为i为什么tileid=0
对应于第七个链接?只需使用算术和-7
就可以在第一个for
循环中使用嵌套的for
循环,或者可以将所有的HREF放入一个对象并使用直接对象属性查找。tileid=hrefs.indexOf(窗口位置)-7
使用switch语句仍然不能删除重复的代码,这通常是你做错事的标志如果它是一个适用于switch的实例,它不是重复的代码。你真的开发了吗?我发布了一个替代已回答问题的替代方案。他要求使用不同于ifs的方法。如果没有符合他的实际情况,那就这样吧,但这是一个非常可行的选择。不要因为你不明白而否决我。你知道这是为了什么吗?“我真的发展了吗?”你是认真问我的吗?我只说:你在复制代码。你实现切换的方式可以在一行中完成。tileid=urlval;
,或者tileid=(urlval!=一些我不想要的值?urlval:DEFAULT\u值)
。别这么粗鲁,我只是清楚地说你在复制代码。他确实要求了一种替代方法,但他要求了一种比使用if/else if更简单的方法。使用开关并不会使这变得更容易;只是更容易阅读,但它仍然很混乱,不易维护。此外,我想声明OP说他必须处理它通过几百次,他真的想复制/粘贴100次以上吗?使用开关并不会停止复制和粘贴(即复制代码)。如果结果表明他需要处理更多,这意味着需要更多的复制和粘贴。看看David的答案,这是我本想做的,只是常数更少,所以以后更容易更改(如果我需要的话)。所有这些都是关于思想开放、客观、分享想法和做事方法的。你的第一、第二或第三次评论绝对没有任何好处。第一次只是一句挖苦的话,然后是毫无价值的运球。走开,你在烦我!
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;
}
}