0

何が起こっているのかわかりません。

$.ajax 成功メッセージからオブジェクトを取得し、それらを新しい配列に格納してプラグインに渡します。プラグインはデータを使用しますが、上記のタイトルでプロパティ 'ID' を使用できないと報告しています。

for ループの最後で停止し、コンソールの for ループの最初の行を指します。データとすべてを複製します。for の後に何も動作しません。

$.ajax() のスニペット

var suppliers = [];
for(var i=0; i<5; i++){
    suppliers[i] = msg.d[i];
}
$.fn.appendSnapshots(suppliers);

失敗するところ

$.fn.appendSnapshots = function(snapshots) {
var accumulatedHeight = $("#suppliersTable").height();
var IDsShowing = new Array();

for (var i=0; i<snapshots.length; i++){

    if($("#supplierStatusDataRow\\." + snapshots[i].ID).length == 0){

        var $supplierStatusDataRow = $("#supplierStatusDataRow").clone(false)
        $supplierStatusDataRow.css('z-index', 1);
        $supplierStatusDataRow.find("*[id]").andSelf().each(function() { $(this).attr("id", $(this).attr("id") + "." + snapshots[i].ID); });

        $("#supplierStatusDataDiv").append($supplierStatusDataRow);

        $("#statusSupplierName\\." + snapshots[i].ID).append(snapshots[i].SupplierName);
        $("#statusSupplierNumber\\." + snapshots[i].ID).append(snapshots[i].SupplierNumber);
        $("#statusHostNumber\\." + snapshots[i].ID).append(snapshots[i].HostNumber);
        $("#statusSupplierType\\." + snapshots[i].ID).append(snapshots[i].SupplierType);
        $("#statusRecievedReportStatus\\." + snapshots[i].ID).append(snapshots[i].RecievedReportStatus);
        $("#statusBarCode\\." + snapshots[i].ID).append(snapshots[i].BarCode);
        $("#statusNumberOfUsers\\." + snapshots[i].ID).append(snapshots[i].NumberOfUsers);
        $("#statusOnBoardStatus\\." + snapshots[i].ID).append(snapshots[i].OnBoardStatus);
        $("#statusSupplierEmail\\." + snapshots[i].ID).append(snapshots[i].SupplierEmail);
        $("#statusPrimaryBuyer\\." + snapshots[i].ID).append(snapshots[i].PrimaryBuyer);
        $("#statusLastPODate\\." + snapshots[i].ID).append(snapshots[i].LastPODate);
        $("#statusPOMTD\\." + snapshots[i].ID).append(snapshots[i].POMTD);
        $("#statusPOYTD\\." + snapshots[i].ID).append(snapshots[i].POYTD);

        $supplierStatusDataRow.css('top', accumulatedHeight);

        $supplierStatusDataRow.animate({opacity: 1}, 500);

        }
        else{
            $("#supplierStatusDataRow\\." + snapshots[i].ID).animate({top: accumulatedHeight}, 500);
        }

        IDsShowing.push(parseInt(snapshots[i].ID));
        accumulatedHeight += $("#supplierStatusDataRow\\." + snapshots[i].ID).height() - 1;

    }

        $("#supplierStatusDataDiv").find('[id^="supplierStatusDataRow\\."]').each(function(i){ 
        var splitID = $(this).attr("id").split(".");
        if($.inArray(parseInt(splitID[1]), IDsShowing) == -1){
                $("#supplierStatusDataDiv").find('[id^="supplierStatusDataRow\\.' + splitID[1] + '"]').animate(
                    {opacity: 0}, 
                    500, 
                    function() { $("#supplierStatusDataRow\\." + splitID[1]).remove();
                });
            }
        });

        totalHeight = $("#supplierStatusRadioDiv").height() + $("#supplierStatusNameDiv").height() + $("#supplierStatusSlider").height() + accumulatedHeight;
        $("#suppliersSnapshot").animate({height: totalHeight}, 500);
        $("#supplierStatusDataDiv").animate({height: accumulatedHeight}, 500);
    }
4

1 に答える 1

2

forループ内の配列の最後を見ているようです。試す:

for(var i=0; i< msg.d.length; i++){
    suppliers[i] = msg.d[i];
}
于 2012-11-22T00:12:49.657 に答える