1

クリックされた特定のリンクに基づいてページの背景色を変更する非常に単純な関数がありますが、なぜ機能しないのかわかりません。

ここに私がこれまでに持っているもののデモがあります: http://jsfiddle.net/cF74Y/

些細なミスに違いないように見えますが、見当たりません。どんな助けでも大歓迎です。

4

6 に答える 6

3

文字列を数値と比較しています。変更switch (currentItem)するswitch (+currentItem)と、デモが機能します。

追加:currentItemグローバル変数を使用する代わりに、をパラメーターとして渡すことができ

これが動作デモです。

于 2012-10-04T06:37:20.037 に答える
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

于 2012-10-04T06:40:04.803 に答える
2

これを試して:

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

その後、それは動作します。

理由: .attr() 関数の戻り値の型が文字列で、常に true ケース 1 になります。parseInt 関数を使用するだけです。

于 2012-10-04T06:40:34.960 に答える
0

たぶん、関数呼び出しでパラメータ'currentItem'を指定する必要があります。

changeBg(currentItem); // call

そして、あなたの関数は次のようになります:

function changeBg(currentItem) {
    var bg = 'null';
    switch (currentItem) {
        case 1 :
            bg = '#6A6A6A';
[..]
于 2012-10-04T06:34:47.993 に答える
0

ここに作業コピーがあります

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

于 2012-10-04T06:40:44.660 に答える
0

ケースと比較するために使用parseIntします。これでは比較できません。フィドルを参照してください。 http://jsfiddle.net/cF74Y/43/

于 2012-10-04T06:45:00.310 に答える