0

私のアプリケーションはMVCであり、MSSQLを使用してイメージファイル名を取得します。次のスクリプトを使用して画像をプリロードしています。プリロードが完了するのを待っている間に砂時計カーソルを表示する方法を知りたいです。

  function preload_images() {
            var i, count = 0;
            $('#selector').css('cursor', 'wait');
            for (i = 1; i < sl; i++) {
                images[i] = new Image();

                images[i].onload = images[i].onerror = function () {
                    count++;
                    if (count == sl) {
                        $('#selector').css('cursor', 'default');
                    }
                }
                 images[i].src = impath.toString() + im.toString() + i + ".jpg";

            }
        }

初めてはうまく機能しますが、ドロップダウンリストからファイル名を変更すると、すべての画像が読み込まれていても砂時計が停止しません。前もって感謝します。

4

2 に答える 2

1

上記のコードから画像を読み込んsl-1でいますが、待機カーソルを停止する条件はslimages(if (count == sl))なので、次のように変更します。if (count == (sl-1))

于 2012-09-05T06:15:34.667 に答える
0

最初の解決策を提供してくれたMusaに感謝します。誰かがそれを探している場合に備えて、これが私がそれを機能させる方法です。

 var images = [];
        function preload_images() {
            showLoadingImage();
            $('#selector').css('cursor', 'wait');
            for (i = tochar; i < sl; i++) {
                images[i] = new Image();
                var name = impath.toString() + imStart.toString() + i + ext;
                images[i].src = 'ImageHandler.ashx?img=' + name + '&window=50&level=50 &slice=0';
                if (i == sl - 1) {
                    images[i].onload = images[i].onerror = function () {
                        $('#selector').css('cursor', 'Default');
                        hideLoadingImage(this);
                    };
                }
            }
        }
        function showLoadingImage() {
            $('#imagediv').append('<div id="imagediv1"><img src="../Content/images/ajax-loader2.gif" alt="Loading..." /></div>');
            $('#imagediv1').show();
        }

        function hideLoadingImage(img) {
            $('#imagediv1').hide();
            img.onload = img.onerror = null;
       }
于 2012-09-08T14:45:06.903 に答える