【发布时间】:2013-08-25 21:45:28
【问题描述】:
我一直在编辑一个脚本,以便在单击菜单图标时将其变为蓝色。 原始脚本有 8 个 if 语句。这很有效,但是当我将 if 语句更改为 switch 时,它停止了工作。我已经检查了三次是否有语法错误、拼写错误等,但菜单图标仍然是灰色的!
谁能给我一个解释?
window.onload = function() {
[].forEach.call(document.querySelectorAll('.navico'), function(el) {
el.addEventListener('click', imageButtonClickHandler);
});
function imageButtonClickHandler()
{
switch(this.id)
{
case(this.id.match("aboutnav")):
grey();
$('#abouttitle').css('color', 'blue');
$('#a').css('color', 'blue');
break;
case(this.id.match("routenav")):
grey();
$('#routetitle').css('color', 'blue');
$('#b').css('color', 'blue');
break;
case(this.id.match("enternav")):
grey();
$('#entertitle').css('color', 'blue');
$('#c').css('color', 'blue');
break;
case(this.id.match("racedaynav")):
grey();
$('#racedaytitle').css('color', 'blue');
$('#d').css('color', 'blue');
break;
case(this.id.match("gallerynav")):
grey();
$('#e').css('color', 'blue');
$('#gallerytitle').css('color', 'blue');
break;
case(this.id.match("newsnav")):
grey();
$('#f').css('color', 'blue');
$('#newstitle').css('color', 'blue');
break;
case(this.id.match("resultsnav")):
grey();
$('#g').css('color' , 'blue');
$('#resultstitle').css('color', 'blue');
break;
case(this.id.match("contactnav")):
grey();
$('#contacttitle').css('color', 'blue');
$('#h').css('color', 'blue');
break;
}
}
}
};
谢谢!
【问题讨论】:
-
不知道是什么问题,但考虑使用通用类而不是 ID。您可能可以大量减少该代码并使其更清晰。
-
嗯,这似乎也不起作用。不过还是谢谢!
-
将“case(this.id.match('...')):”改为“case ...:”
-
字符串何时匹配数组或
null? -
"switch(myArray[...])"
标签: javascript if-statement syntax switch-statement