JavaScript を使用してオブジェクトの配列をクリックし、div にデータを表示する方法

JBaldwin

データベースから取得したスクラップ データのページがあり、それをテーブルに表示しています (これは正常に機能します)。次に、db から別のクエリを実行して、スクラップされたデータからエラー行のみを取得し、そのデータをヘッダーの div に表示します。このようにして、ユーザーは変更するデータを知ることができます。

ユーザーがページを変更して、そのページのエラー データの最初の行を取得することを許可するのに問題があります。現在、私がやっていることは、インデックス変数を作成し、それをカウントとして使用し、ユーザーが行を 1 つずつクリックできるようにすることです。次に、そのページのエラー データがなくなると、次のページに切り替わります。

ユーザーがページを自由に変更してそのデータの正しい行を取得し、そのページのオブジェクトを上下にクリックできるようにするには、どうすればよいでしょうか?

エラー データとページ ヘッダー データが保存されているヘッダーは次のとおりです。

    <div id="pageEditDiv">
        <div class="arrowIconsDiv">
            <img src="images/up-arrow.png" class="arrowIcons" id="arrowUpPage">
            <img src="images/down-arrow.png" class="arrowIcons" id="arrowDownPage">
        </div>
        <div id="pageSummary">
             <table id="headerPagesTable">
                 <thead><tr><th>Page Num</th><th>Type</th><th>Month</th><th>Name</th><th>Reg No.</th><th>Rrc District</th></tr></thead>
                 <tbody id="pagesTableBody"></tbody>
              </table>
        </div>
        <div id="pagesTable" class="hidden"></div>
    </div>
    <div id="rowEditDiv">
        <div class="arrowIconsDiv">
            <img src="images/up-arrow.png" class="arrowIcons" id="arrowUpRow">
            <img src="images/down-arrow.png" class="arrowIcons" id="arrowDownRow">
        </div>
        <div id="editableRowToEdit" contenteditable>
            <table id="editableRowTable">
                <tbody id="pagesRowToEdit"></tbody>
            </table>
        </div>
   </div>

エラー行データを取得する場所は次のとおりです。

    $.ajax({
        type: 'POST', 
        url: 'qry/getPageReceipts.php',
        async: true,
        data: {FileId: fileId, PageNum: getPageNum, RowNum: rowNum},
        success: function(response) {
            recPageData = JSON.parse(response);
            //check if data exists or not
            recPD = {};
            if(recPageData.length == 0) {
                recPageDateEmpty = 1;
            } else {
                //map the data
                recPD = recPageData.PageNum.map((x,i) => ({
                        pageNum: x,
                        rowNum: recPageData["RowNum"][i],
                        cName: recPageData["CustomerName"][i],
                        fName: recPageData["FacilityName"][i],
                        rrcNum: recPageData["RrcNum"][i],
                        rrcType: recPageData["RrcNumType"][i],
                        volume: recPageData["Volume"][i]
                }));
                //sort the data
                recPD.sort(function(a,b) {
                    if(a.pageNum == b.pageNum) {
                        return (a.rowNum - b.rowNum);
                    } else {
                        return (a.pageNum - b.pageNum);
                    }
                });
                for(var i=0; i<recPD.length; i++) {
                    recPD[i].index = i;
                }
            }
            drawPageForm();
            drawRowEditForm();
        }
    });

ここで、ユーザーがページを上下にクリックできるようにページの概要データを描画します。

    function drawPageForm() {
        //clear div to begin with
        $(".pagesMonth").html();
        $("#pagesTableBody").empty();

        var getPages = '<table><thead><tr><th>Page Num</th><th>Type</th><th>Month</th><th>Name</th><th>Reg No.</th><th>Rrc District</th></tr></thead><tbody>';

        for(var i=0; i<getPagesResponse.length; i++) {
            getPages += '<tr class="getPagesRowEdit"><td>' + getPagesResponse["PageNum"][i] + '</td><td class="pagesPageType">' + getPagesResponse["PageType"][i] + '</td><td class="pagesMonth">' + getPagesResponse["ReportingMonth"][i] + '</td><td class="pagesFilerName">' + getPagesResponse["FilerName"][i] + '</td><td class="pagesFilerRegNo">' + getPagesResponse["FilerRegNo"][i] + '</td><td class="pagesRrcDistrict">' + getPagesResponse["RrcDistrict"][i] + '</td></tr>';
        }
        getPages += '</tbody></table>';
        //add table to div
        $("#pagesTable").html(getPages);

        //PAGES
        //delcare single object for page summary
        gPT = {
            gPRE : $(".getPagesRowEdit").eq(0),
            pNum : $(".getPagesRowEdit").find("td").eq(0).text(),
            pTB : $("#pagesTableBody"),
            aUP : $("#arrowUpPage"),
            aDP : $("#arrowDownPage"),
            place : function(row) {
                gPT.pTB.empty();
                clone = row.clone(true);
                clone.appendTo(gPT.pTB);
            }
        }
        //add row to div
        gPT.place(gPT.gPRE);
        //arrow up
        gPT.aUP.on("click", function() {
            prev = gPT.gPRE.prev();
            gPT.gPRE = prev.is("tr") ? prev : gPT.gPRE;
            gPT.place(gPT.gPRE);
            gPT.pNum = $(".getPagesRowEdit").find("td").eq(0).text();
            pageNum = gPT.pNum;
            reDrawTextContentandPDF();
        });
        //arrow down
        gPT.aDP.on("click", function() {
            next = gPT.gPRE.next();
            gPT.gPRE = next.is("tr") ? next : gPT.gPRE;
            gPT.place(gPT.gPRE);
            gPT.pNum = $(".getPagesRowEdit").find("td").eq(0).text();
            pageNum = gPT.pNum;
            reDrawTextContentandPDF();
        });
}

ここで、ユーザーがその特定のページのデータの各行をクリックして上下にクリックできるように、行エラー データを描画します。

function drawRowEditForm() {
    //get the current page type
    pageTypeValue = $(".pagesPageType").html();
    //empty row
    $("#pagesRowToEdit").empty();
    //find correct row
    recPD.find(findRecPageIndex);

    //match row with rawText row
    findMatchRowNum = $("#pagesRowToEdit").find("tr").eq(0).find("td").eq(0).text();
    findMatchRowNum = findMatchRowNum - 1;
    matchedRow = $(".rowToEdit").eq(findMatchRowNum);
    matchedRow.addClass("selected");
    //scroll div to visible row
    $("#textCodeDiv").animate({
        scrollTop: $(".selected").offset().top
    },'slow');

    //click arrow up
    $("#arrowUpRow").unbind("click").click(function() {
        clickRowArrowUp();
    });
    //click arrow down
    $("#arrowDownRow").unbind("click").click(function() {
        clickRowArrowDown();
    });
}

function clickRowArrowUp() {
            $("#pagesRowToEdit").empty();
            if($(".selected")) {
                $(".selected").removeClass("selected");
            }
            recRowIndex--;
            if(recPD.find(findRecPageIndex)) {
                drawRowEditForm();
            } else {
                prev = gPT.gPRE.prev();
                gPT.gPRE = prev.is("tr") ? prev : gPT.gPRE;
                gPT.place(gPT.gPRE);
                gPT.pNum = $(".getPagesRowEdit").find("td").eq(0).text();
                pageNum = gPT.pNum;
                reDrawTextContentandPDF();
            }
}

function clickArrowDown() {
            $("#pagesRowToEdit").empty();
            if($(".selected")) {
                $(".selected").removeClass("selected");
            }
            recRowIndex++;
            if(recPD.find(findRecPageIndex)) {
                drawRowEditForm();
            } else {
                next = gPT.gPRE.next();
                gPT.gPRE = next.is("tr") ? next : gPT.gPRE;
                gPT.place(gPT.gPRE);
                gPT.pNum = $(".getPagesRowEdit").find("td").eq(0).text();
                pageNum = gPT.pNum;
                reDrawTextContentandPDF();
            }
}

    //match the row to the error data and display in header
    function findRecPageIndex(el) {

        if(el.index === recRowIndex && el.pageNum === pageNum) {
            return $("#pagesRowToEdit").append("<tr id='recTR'><td class='hidden'>" + el.rowNum + "</td><td>" + el.cName + "</td><td>" + el.fName + "</td><td>" + el.rrcNum + "</td><td>" + el.rrcType + "</td><td>" + el.volume + "</td></tr>");
        }

    }
    function findDelPageIndex(el) {

        if(el.index === delRowIndex && el.pageNum === pageNum) {
            return $("#pagesRowToEdit").append("<tr id='delTR'><td class='hidden'>" + el.rowNum + "</td><td>" + el.cName + "</td><td>" + el.fName + "</td><td>" + el.rrcNum + "</td><td>" + el.rrcType + "</td><td>" + el.volume + "</td></tr>");
        }

    }

要約すると、ユーザーはページを変更できますが、エラー データをクリックすることはできません。ユーザーは行を変更でき、そのページにエラー データがなくなると、ページが変更され、最初のエラー データ行が表示されます。

私が知る必要があるのは、ユーザーがページを自由にクリックできるようにし、ページ番号を特定して最初のエラー行を表示し、ユーザーがそのページの正しい行をクリックできるようにする方法です。 .

ロストインテトン

これをページの上下関数に追加してみてください:

    for(var i=0; i<recPD.length; i++) {
        if(pageNum == recPD[i].pageNum) {
            recRowIndex = recPD[i].index;
            break;
        }
    }

ここでは、データをループして、ページ番号が一致するかどうかを確認してから、recRowIndex 変数をエラー行データの最小インデックスに更新しています。

うまくいくことを願っています!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

javascriptを使用して配列オブジェクトの配列オブジェクト内のデータをフィルタリングする

分類Dev

チェックボックスを使用してオブジェクトの配列を反復するjavascript

分類Dev

Javascriptを使用してオブジェクトの配列をオブジェクトに変換します

分類Dev

キーの配列を使用してJavascriptオブジェクトから値をフェッチする方法

分類Dev

Javascript /React.jsを使用してオブジェクトの配列インデックスを検索する

分類Dev

JavaScriptを使用してJSONオブジェクトを配列に操作する方法

分類Dev

javascriptを使用してオブジェクトの配列をマップし、未定義の値を返します

分類Dev

JavaScript で配列を使用してオブジェクトの値を取得する

分類Dev

オブジェクトのJSON配列をJavaScriptを使用してnastedjsonツリーに変換します

分類Dev

javascriptを使用してオブジェクトの配列を別の配列に結合する方法

分類Dev

javascript:2つの配列をリンクしてJSONオブジェクトの配列を作成します

分類Dev

JavaScriptを使用してオブジェクトの配列を使用して3レベルに依存するドロップダウンリストを作成する

分類Dev

反応とJavaScriptで、配列をループしてその配列のオブジェクト内のデータを表示する方法

分類Dev

Javascriptで引数としてオブジェクトの配列を使用する

分類Dev

ネイティブJavaScriptを使用して配列内のオブジェクトをマージする方法

分類Dev

角度またはJavaScriptを使用して、すべてのオブジェクトキーを配列内の別の配列にプッシュする方法は?

分類Dev

javascriptを使用して別の配列値に基づいてオブジェクトの配列をフィルタリングする方法は?

分類Dev

Javascriptでオブジェクトの配列の配列をフラット化してマージします

分類Dev

javascript配列オブジェクト/ JSONからデータを取得してReactJSで使用する方法

分類Dev

javascriptを使用してオブジェクトの2つの配列をマージする方法

分類Dev

lodashを使用してオブジェクトのjavascript配列をマップ/変換します

分類Dev

JavaScriptは、lodashを使用してオブジェクトの配列を別の配列に変換します

分類Dev

Javascriptを使用して、同じ日付の配列のオブジェクトをオブジェクトの新しい配列に結合します

分類Dev

変数付きのJavaScriptを使用してオブジェクト配列にアクセスする方法

分類Dev

javascriptを使用してオブジェクト配列をループします

分類Dev

オブジェクトのjavascript配列をキーと値の配列を使用してオブジェクトに変換します

分類Dev

オブジェクトの配列を繰り返し、JavaScriptのみを使用してデフォルトのアンカーhrefリンクを防止します

分類Dev

javascriptを使用してJSONオブジェクトを配列にプッシュする方法

分類Dev

jqueryまたはjavascriptを使用してオブジェクトの配列をソートする方法

Related 関連記事

  1. 1

    javascriptを使用して配列オブジェクトの配列オブジェクト内のデータをフィルタリングする

  2. 2

    チェックボックスを使用してオブジェクトの配列を反復するjavascript

  3. 3

    Javascriptを使用してオブジェクトの配列をオブジェクトに変換します

  4. 4

    キーの配列を使用してJavascriptオブジェクトから値をフェッチする方法

  5. 5

    Javascript /React.jsを使用してオブジェクトの配列インデックスを検索する

  6. 6

    JavaScriptを使用してJSONオブジェクトを配列に操作する方法

  7. 7

    javascriptを使用してオブジェクトの配列をマップし、未定義の値を返します

  8. 8

    JavaScript で配列を使用してオブジェクトの値を取得する

  9. 9

    オブジェクトのJSON配列をJavaScriptを使用してnastedjsonツリーに変換します

  10. 10

    javascriptを使用してオブジェクトの配列を別の配列に結合する方法

  11. 11

    javascript:2つの配列をリンクしてJSONオブジェクトの配列を作成します

  12. 12

    JavaScriptを使用してオブジェクトの配列を使用して3レベルに依存するドロップダウンリストを作成する

  13. 13

    反応とJavaScriptで、配列をループしてその配列のオブジェクト内のデータを表示する方法

  14. 14

    Javascriptで引数としてオブジェクトの配列を使用する

  15. 15

    ネイティブJavaScriptを使用して配列内のオブジェクトをマージする方法

  16. 16

    角度またはJavaScriptを使用して、すべてのオブジェクトキーを配列内の別の配列にプッシュする方法は?

  17. 17

    javascriptを使用して別の配列値に基づいてオブジェクトの配列をフィルタリングする方法は?

  18. 18

    Javascriptでオブジェクトの配列の配列をフラット化してマージします

  19. 19

    javascript配列オブジェクト/ JSONからデータを取得してReactJSで使用する方法

  20. 20

    javascriptを使用してオブジェクトの2つの配列をマージする方法

  21. 21

    lodashを使用してオブジェクトのjavascript配列をマップ/変換します

  22. 22

    JavaScriptは、lodashを使用してオブジェクトの配列を別の配列に変換します

  23. 23

    Javascriptを使用して、同じ日付の配列のオブジェクトをオブジェクトの新しい配列に結合します

  24. 24

    変数付きのJavaScriptを使用してオブジェクト配列にアクセスする方法

  25. 25

    javascriptを使用してオブジェクト配列をループします

  26. 26

    オブジェクトのjavascript配列をキーと値の配列を使用してオブジェクトに変換します

  27. 27

    オブジェクトの配列を繰り返し、JavaScriptのみを使用してデフォルトのアンカーhrefリンクを防止します

  28. 28

    javascriptを使用してJSONオブジェクトを配列にプッシュする方法

  29. 29

    jqueryまたはjavascriptを使用してオブジェクトの配列をソートする方法

ホットタグ

アーカイブ