Switch语句错误
Switch statement error?
我一直在编辑一个脚本,当点击菜单图标时,它会变成蓝色。原始脚本有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值,请将this.id.match("something")更改为case"somethings"。如果您试图应用正则表达式来匹配字符串的部分,我认为您不能使用switch。
开关在您的情况下所做的:对于每个情况,它调用match方法并决定函数的结果(数组或null)是否等于您的字符串。当然,这种情况从来没有发生过。
下面是您的问题的一个工作示例。Js投标链接
HTML:
<div id="aboutnav" class="navico">Click 1</div>
<div id="routenav" class="navico">Click 2</div>
<div id="enternav" class="navico">Click 3</div>
<div id="racedaynav" class="navico">Click 4</div>
Javascript:
$(document).ready(function () {
[].forEach.call(document.querySelectorAll('div.navico'), function (el) {
el.addEventListener('click', imageButtonClickHandler);
});
function imageButtonClickHandler() {
switch (this.id) {
case "aboutnav":
$('#aboutnav').css('color', 'blue');
$('#a').css('color', 'blue');
break;
case "routenav":
//grey();
$('#routenav').css('color', 'red');
$('#b').css('color', 'blue');
break;
case "enternav":
//grey();
$('#enternav').css('color', 'yellow');
$('#c').css('color', 'blue');
break;
case "racedaynav":
//grey();
$('#racedaynav').css('color', 'orange');
$('#d').css('color', 'blue');
break;
}
}
});
相关文章:
- 将错误与if语句混淆
- 如何知道javascript for语句中的所有结果是否都是错误的
- MVC Jquery-按钮点击-获取if语句错误
- 由 if / else 语句中的无效语法导致的语法错误
- Javascript else-if语句错误
- 阻止表单提交 javascript 为什么有一个明显的错误语句返回 true
- 筛选器后的行计数错误(使用if语句)
- Simple Javascript if语句中存在语法错误
- Null记录错误地触发Else语句
- Javascript if else语句OR条件错误
- 如果语句返回错误答案
- 防止 if 语句中的错误“未定义”
- 使用 If else if else 语句得到错误
- ES6 大箭头符号函数给出语法错误:缺失;在语句之前
- 非法返回语句错误
- 为什么我的 if 语句出现语法错误
- 为什么以下语句执行没有错误
- 我的“if”语句中包含中断的错误(wrox ch 3 练习 4)
- 为什么在调用丢失的函数时会捕获错误,而不是在错误语句中捕获错误
- jQuery无线电检查命中错误语句