0

プロジェクトにlocalstorageを使用していて、tablesorter2jqueryプラグインを使用してテーブルを並べ替えようとしています。次のエラーが発生し続けます。

Uncaught TypeError:未定義のプロパティ「行」を読み取ることができません

送信ボタンのクリックで実行されている関数があり、ローカルストレージからこれらの行を追加します。これは、フレンドリーなjavascriptコンソールが存在しないと信じています。

元のマークアップの行ではなく、ローカルストレージから追加された行を呼び出す方法はありますか?

テーブル行を追加するためのコードは次のとおりです。

$(document).ready(function(){

    $.extend($.fn, {
        storeitem: function() {

            //add a new id for each array
            $newTeam = $('#team');

            //set up unique ids for each array
            var i = Number(localStorage.getItem('team-counter')) + 1;

            // create condition to add or loop through new entry
            if ($newTeam.val() !== "") {
                // Take the value of the input field and save it to localStorage
                localStorage.setItem("team-" + i, $newTeam.val());

                // Set the to-do max counter so on page refresh it keeps going up instead of reset
                localStorage.setItem('team-counter', i);
            }

            //use serializeArray to simplify array creation
            //  var teaminfo = $("#newTeamForm").serializeArray();

            var teaminfo = {};
            var givemethat = $.each($('#newTeamForm').serializeArray(), function() {
                teaminfo[this.name] = this.value;
            });
            //alert(teaminfo.teamname);
            //$('div.second').replaceWith('<h2>New heading</h2>');
            $("#standings tr:last-child").after('<tbody><tr><td>' + teaminfo.teamname + '</td> <td></td><td></td> <td></td></tr></tbody>' );
            $("#standings").tablesorter();
            //$("#standings > tbody:last").after("<tr>" +  + "</tr>");
            //store data in key value pair and stringify
            localStorage.setItem("team-" + i, JSON.stringify(teaminfo));

            //  var neat = localStorage.setItem('teamname')

            var teamName = JSON.parse(localStorage.getItem("team-" + i));

        }//storeitem

    });//extend

});//doc ready

ソート機能を実行するために、次のコマンドを実行しました。

$('#standings').tablesorter();

この関数は、テーブル行を手動でマークアップに追加したときに機能しましたが、上記の関数を使用してローカルストレージから追加した場合に機能しました。

これが理にかなっている場合はお知らせください。私は新しい開発者ですので、あいまいさをお許しください。

4

1 に答える 1

0

私が目にする最も明白な問題は、コードが追加するtbodyすべての行に新しいものを追加していることです:

$("#standings tr:last-child").after('<tbody><tr><td>' + teaminfo.teamname + '</td> <td></td><td></td> <td></td></tr></tbody>' );

これは次のようになります。

$("#standings tr:last-child").after('<tr><td>' + teaminfo.teamname + '</td> <td></td><td></td> <td></td></tr>' );

ただし、空のテーブルセルに新しいデータをループして追加する方法はわかりません。

欠けている部分は、すべての行を追加したら、tablesorter を更新する必要があるということです。このデモを参照してください。

$("table").trigger("update");
于 2012-08-10T23:49:28.443 に答える