JavaScript switch case 语句设置范围

不知是否出于什么缘故,我google搜索
javascript switch case 范围
这几个关键字,出来的前几条都是csdn上关于无解的表示。
可能是其他编译型语言中,case后便必须是常量的缘故吧。

后来在一个边角的地方看到某人发帖是VB还是不知道哪个语言中的中实现了switch case语句的范围选择,大家看了下面代码就明白了。

var x=1
switch(true){
case x>0&&x<10: alert(1);break; case x>=10&&x<20: alert(2);break; }

看明白啦?就是利用传递给switch的参数设为true,把原来的变量变成常量,常量变变量,逆向思维。巧妙吧?

本来我想出来的办法是这样的,没有上面的好,没有跳出思维定势,也贴出来给大家看看,权当娱乐娱乐了

var x=1
switch(x){
case (x>0&&x<10)*x: alert(1);break; case (x>=10&&x<20)*x: alert(2);break; }

找出页面内重复的Id

今天群里提起这事,
判断页面内是否有重复的id

一种是已知id,看是否有重复。基本上Ctrl+F就能搞定~
但是Robin给出了方法:


function chkid(idname){
s=0;
divs = document.getElementsByTagName(“*”);
for (i=0; i

而后我又在其基础上修改了能够找出页面内所有重复的Id


function chkid(){
var did={},tmpid;
divs = document.getElementsByTagName(“*”);
for (var i=divs.length-1; i+1; i–){
(tmpid=divs[i].id)
&&did[tmpid]===undefined
?did[tmpid]=0
:did[tmpid]++;
}
for (var i in did) {
did[i]&&alert(“id=”+i+”重复了”+(did[i]+1)+”次”);
}
}

比较可靠,兼容ie和ff。
不过一般的html检查器都有这个功能,这个代码又有多大用处呢?呵呵,感觉没有。