0

私は比較的jqueryを使用しており、クリックごとにjsアコーディオンの上下矢印を変更しようとしていますが、残念ながら、console.logに悪い変数を記録した場合にのみ機能するというエラーに遭遇しました。たとえば、アコーディオン ID が 1 の場合など、onclick="embiggen(1)" を実行したときに間違っている可能性があることについて、誰かが何かガイダンスを持っていますか?

HTML には他にもいくつかの問題がありますが、具体的には、console.log; の場合にのみ機能するのはなぜですか?

function arrowup(id){
$('#downarrow'+id).remove();
$('#dropdown'+id).append('</a>');
$('#dropdown'+id).append('<i id="uparrow'+ id +'" class="icon-1 icon-chevron-up">');
}

function arrowdown(id){
$('#uparrow'+id).remove();
$('#dropdown'+id).append('</a>');
$('#dropdown'+id).append('<i id="downarrow'+ id +'" class="icon-1 icon-chevron-down">');
}


//Switches the arrows
function embiggen(id){

var up = $('#uparrow'+id).length;
if (up == 1){
    arrowdown(id);
    console.log(i see you);
}
var down = $('#downarrow'+id).length;
if (down == 1){
    arrowup(id);
}

}
4

2 に答える 2

0

エラーが発生すると、JavaScript が関数本体の残りをスキップするため、これが機能します。

あなたの場合の問題は、関数arrowdown()が作成#downarrow+idし、次の条件を真にして関数を呼び出すことですarrowup()

Fabricio's answerを使用して別のブランチが必要になるか、そうでなければ状態を変更する DOM に変更を加えた直後に戻ります。

function embiggen(id) {
    if ($('#uparrow'+id).length) {
        return arrowdown(id);
    }
    if ($('#downarrow'+id).length) {
        return arrowup(id);
    }
    // ehm, something else happened?
}
于 2013-05-29T02:13:08.343 に答える