1

関数 loadPage により、読み込みのたびにブラウザがフリーズします。

コメントを外し$("#responsedcontainer").load("widget.php"); てもブラウザがフリーズすることはありませんが、関数 loadPage を使用するとフリーズします。ロード機能のみを使用すると、他の機能は実行されません。

私は自分のjqueryに非常に制限があり、学習しようとしています。これが理にかなっていることを願っています。

var beforeLoadData = [];

    function loadPage( url ){
        var ajax = new XMLHttpRequest();
        ajax.open("GET", url , false);
        ajax.send(null);
        $("#responsedcontainer").html( ajax.responseText );
    }

    function saveTableData(){
        beforeLoadData = []       
        $("td.changeable").each( function(){
            beforeLoadData.push( { "key": $(this).attr('id'), "value": $(this).text() } );
        }); 
    }

    function getSavedValueFor( key ){
        for( var i in beforeLoadData ){
            if( beforeLoadData[i].key === key )
                return i;
        }
        return -1;
    }

    function checkTableData(){
        $("td.changeable").each( function(){
            var thisValue = { "key": $(this).attr('id'), "value": $(this).text() };
            var index = getSavedValueFor( thisValue.key );
            if( index >= 0){
                if( beforeLoadData[index].value > thisValue.value )
                    $( "td#"+thisValue.key ).addClass( 'updated' );
                if( beforeLoadData[index].value < thisValue.value )
                    $( "td#"+thisValue.key ).addClass( 'minus' );  
                } 

        });
    }

    function removeUpdatedClass( ){
        setTimeout( function(){
            $('td.updated').removeClass('updated');
            $('td.minus').removeClass('minus');
        },4000);
    }


    $(function(){
        saveTableData();
        //$("#responsedcontainer").load("widget.php");
        loadPage( "widget.php" );
        checkTableData();
        removeUpdatedClass();
        var refreshId = setInterval(function() {
            saveTableData();
            //$("#responsedcontainer").load("widget.php?randval="+ Math.random());
            loadPage("widget.php?randval="+ Math.random());
            checkTableData();
            removeUpdatedClass();
        }, 5000);
    });
4

1 に答える 1