0

以下は、特定の div を表示しようとしている JavaScript であり、関数が実行された後、div はそれ自体で非表示になるはずですが、同じ関数で両方とも最初に表示するように機能せず、一定の時間間隔後に表示するように機能しないというこの問題が発生していますそのdivを非表示にしますが、ショーと非表示のイベントを別々に配置すると、正常に機能しました。結果を処理した後にそのdivを非表示にするように、次のコードを変更する方法を教えてください

 function jq(input)
    {


    if (input == 'abc')
    {
    $("#show").show(1000);

        document.getElementById('sele').options.length = 0;

    $('#sele').append('<option value="test">Testing</option>').updateSelect();

    $("#show").hide(1000);

    }
}

 <div id="show" > <img  src="ajax-loader.gif" width="16" height="16" /> </div>
4

2 に答える 2

1
$("#show").show(1000, function() {

    $('#sele').empty(); // instead of: document.getElementById('sele').options.length = 0;

    $('#sele').append('<option value="test">Testing</option>').updateSelect();

    // make a delay using setTimeout()
    setTimeout(function() {

      $("#show").hide(1000);

    }, 500);

});

完全なコード

function jq(input) {
    if (input == 'abc') {
        $("#show").show(1000, function() {
            $('#sele').empty();
            $('#sele').append('<option value="test">Testing</option>').updateSelect();
            setTimeout(function() {
                $("#show").hide(1000);
            }, 500);
        });
    }
}
于 2012-09-14T18:36:43.643 に答える
0

次の行でエラーが発生していると思います(コンソールを確認してください):

document.getElementById('sele').options.length = 0;

length読み取り専用です。これは選択を空にする方法ではありません。jQuery を使用しているので、代わりに次のようなことを行うことができます。

$('#sele').empty();
于 2012-09-14T18:36:04.087 に答える