使用css()更改背景颜色的JavaScript开关

时间:2012-10-04 06:31:14

标签: javascript jquery css switch-statement background-color

我有一个非常简单的功能,应根据点击的特定链接更改页面背景颜色,但我无法弄清楚它为什么不起作用。

以下是我到目前为止的演示:http://jsfiddle.net/cF74Y/

似乎一定是一个微不足道的错误,但我看不到它。任何帮助将不胜感激。

6 个答案:

答案 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()]);
});

演示: http://jsfiddle.net/elclanrs/8yev9/1

答案 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)

这是一份工作副本

http://jsfiddle.net/cF74Y/34/

答案 5 :(得分:0)

使用parseInt来比较case.With这无法比较。看小提琴。 http://jsfiddle.net/cF74Y/43/