我有一个非常简单的功能,应根据点击的特定链接更改页面背景颜色,但我无法弄清楚它为什么不起作用。
以下是我到目前为止的演示:http://jsfiddle.net/cF74Y/
似乎一定是一个微不足道的错误,但我看不到它。任何帮助将不胜感激。
答案 0 :(得分:3)
您将字符串与数字进行比较,将switch (currentItem)
更改为switch (+currentItem)
将使您的演示工作正常。
添加: 您可以将currentItem
作为参数传递,而不是使用全局变量。
的 Here is the working demo. 强> 的
答案 1 :(得分:3)
我认为你的事情太复杂了,你不能这样做吗?
<强> HTML:强>
<ul id="nav">
<li><a class="color" href="#">red</a></li>
<li><a class="color" href="#">green</a></li>
<li><a class="color" href="#">blue</a></li>
<li><a class="color" href="#">yellow</a></li>
</ul>
<强> jQuery的:强>
$('a.color').click(function(){
$('body').css('background-color', $(this).text());
});
演示: http://jsfiddle.net/elclanrs/8yev9/
编辑:如果您需要通过索引分配颜色使用数组,我认为您不需要那个丑陋的switch
语句,对我来说似乎没用,所有这一切代码可以简化为:
var colors = ['red', 'blue', 'green', 'yellow'];
$('a.color').click(function(){
$('body').css('background-color', colors[$(this).parent().index()]);
});
答案 2 :(得分:2)
试试这个:
var index = parseInt($(this).attr('id'),10);
然后它会起作用。
原因:.attr()函数的返回类型是一个字符串,它始终为true case 1。只需使用parseInt函数。
答案 3 :(得分:0)
也许你必须通过函数调用给出参数'currentItem'。
changeBg(currentItem); // call
你的功能将如下所示:
function changeBg(currentItem) {
var bg = 'null';
switch (currentItem) {
case 1 :
bg = '#6A6A6A';
[..]
答案 4 :(得分:0)
这是一份工作副本
答案 5 :(得分:0)
使用parseInt
来比较case.With这无法比较。看小提琴。
http://jsfiddle.net/cF74Y/43/