簡體   English   中英

JavaScript開關,用於使用css()更改背景顏色

[英]JavaScript switch for changing background colour with css()

我有一個非常簡單的功能,該功能應該根據所單擊的特定鏈接來更改頁面背景顏色,但是我不知道為什么它不起作用。

這是到目前為止的演示: http : //jsfiddle.net/cF74Y/

看來這肯定是一個微不足道的錯誤,但我看不到它。 任何幫助將不勝感激。

您將字符串與數字進行比較,將switch (currentItem)更改為switch (+currentItem)將使您的演示工作正常。

另外:您可以將currentItem作為參數傳遞,而不是使用全局變量。

這是工作演示。

我認為您使事情變得過於復雜,難道您不可以這樣做嗎?

的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

嘗試這個:

var index = parseInt($(this).attr('id'),10);

那么它將起作用。

原因:.attr()函數的返回類型為字符串,並且始終為true情況1。 只需使用parseInt函數。

也許您必須在函數調用中給參數“ currentItem”。

changeBg(currentItem); // call

您的函數將如下所示:

function changeBg(currentItem) {
    var bg = 'null';
    switch (currentItem) {
        case 1 :
            bg = '#6A6A6A';
[..]

這是工作副本

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

使用parseInt與大小寫進行比較,因此無法進行比較。 http://jsfiddle.net/cF74Y/43/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM