質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • JavaScript

    16431questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Java

    13791questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

ModalWindowに変数の値を表示する

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 186

Anon_tmr

score 10

こんにちは。

JavaScriptを使用して開発を行っている者です。
タイトルの通りなのですが、ModalWindowに変数の値を表示させたいのですがうまくいかないため
質問させていただきました。

やり方として考えているのが、<Script>内でのAllowanceCopy()に表示させたい変数の値を
渡して、その中でModalWindowのコンテンツとなる部分のテーブル、<tr>を取得して、その中の
空の<td>に値を設定するという事を考えていました。

それでとりあえず記述してみたのが以下のコードです。
引数にしたい変数は、String compenName・String workerName・int totalです。

引数の記述の仕方やJavaScriptの記述の仕方の間違いのご指摘や、
変数を表示させるやり方自体についてアドバイスをいただきたいと思っております。
お手数ですがよろしくお願いいたします。

<table class="table" rules="all">
                    <tr>
                        <td class="td">職人名</td>
                        <%
                        int count = 0;
                        int[] sum = new int[compenList.size()];

                        //取得した手当の全種類を表示する

                        if (compenList != null ) {
                            for(int i = 0; i < compenList.size(); i++) {

                                Compensation c = compenList.get(i);
                                compenName = compenList.get(i).getName();
                        %>
                        <td class="td"
                            <%= c.getId() < 0 ? "" : "onclick=\"UpdateCompensation('" + c.getName() + "', " + c.getId() + ", '" + c.getUnit() + "', " + c.getUnitprice() + ")\"" %>>

                        <%= compenName%>

                        </td>

                        <%
                            }
                        }
                        %>
                    </tr>

                        <%
                        ArrayList<Worker>worker = null;

                        //全職人の情報を取得
                        if (groupList != null ) {
                            for(int i = 0; i < groupList.size(); i++) {
                                Group group = groupList.get(i);
                                worker = group.getAllMember();
                        %>
                        <%

                                //全職人のフルネームを取得
                                for (int j = 0; j < worker.size();j++) {
                                    workerName = worker.get(j).getFullname();
                        %>

                    <tr>
                        <td align="center">
                            <%= workerName%>
                        </td>

                            <%
                            //allowanceListとGroupLIst/memberの順番は対応している
                            for (int i2 = 0;i2 < compenList.size(); i2++ ) {
                                 total = 0;
                                float floatTotal = 0;

                                int compenID = compenList.get(i2).getId();

                                //職人が持つ手当のリスト
                                ArrayList<Allowance>allowanceInfo = allowanceList.get(count);
                                Allowance allowance = null;

                                for (int j2 = 0;j2 < allowanceInfo.size();j2++) {
                                    allowance = allowanceInfo.get(j2);

                                    if (allowance.getCompensation().getId() == compenID) {
                                        floatTotal = allowance.getUnitprice() * allowance.getQuantity();
                                        total += (int)Math.floor(floatTotal);

                                    }
                            %>
                            <%
                                }
                             %>
                            <td align="center" onclick="AllowanceCopy(workerName,compenName,total)"><%= total%></td>
                                <%
                                sum[i2] += total;
                                        }
                                    count++;
                                    }
                                }
                            }

                            %>
                    </tr>
                    <tr>
                        <td class="td">合計額</td>
                        <%for (int index= 0;index < sum.length;index++) {
                            %>
                                <td align="center"><%= sum[index]%></td>
                        <%
                          }
                        %>
                    </tr>
                </table>
                <%} %>
        </form>

            <!-- コピーしたい手当の期間を設定するwindow -->

            <form action="<%= request.getContextPath()%>/allowanceCopy">
                <div id="modal_allowanceCopy" align="center"class="modal_window">
                    <table id="allowance_copy" align="center">
                        <tr>
                            <th><%=pageCompen %>の適用期間設定</th>
                        </tr>
                        <tr>
                            <td></td>
                            <td></td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>
                                <input type="number" name="start_year" min="1950" max="2100" value="<%= _PAGE_YEAR_ %>"><input type="hidden" name="type" value="<%= compenType%>">
                                <select name="start_month">
                                <% for(int i = 0; i < 12; i++){ %>
                                    <option value="<%= i + 1 %>"><%=i + 1 %></option>
                                <% } %>
                                </select> 月
                                ~
                                <input type="number" name="end_year" min="1950" max="2100" value="<%= _PAGE_YEAR_ %>"><select name="end_month">
                                <% for(int i = 0; i < 12; i++){ %>
                                    <option value="<%=i + 1 %>"><%=i + 1 %></option>
                                <% } %>
                                </select></td>
                        </tr>
                        <tr>
                            <td align="right">まで適用する。</td>
                        </tr>
                        <tr>
                            <td align="center">
                                <input type="submit" name="submit" value="決定">
                                <input type="button" value="キャンセル"onclick="closeWindow()">
                            </td>
                        </tr>
                    </table>
                </div>
            </form>
        </div>
    </body>
</html>

<script type="text/javascript" src="/yngd/view/js/common/modalWindow.js"></script>
<script type="text/javascript" src="/yngd/view/js/common/utils.js"></script>
<script type="text/javascript" src="/yngd/view/js/common/formCheck.js"></script>


<script type="text/javascript">

MWOnloadFunction();

function UpdateCompensation(name,id,unit,unitprice) {
    //windowを開く
    modalOpen("modal_allowanceCreate");

    //選択された手当の情報を取得する(引数できてる)取得した情報を転記する
    document.update.compenName.value = name;
    console.log(document.update.compenName);

    document.update.compenId.value = id;
    console.log(document.update.compenId);

    document.update.unit.value = unit;
    console.log(document.update.unit);

    document.update.unitPrice.value = unitprice;
    console.log(document.update.unitPrice);

    //入力チェック
    FCOnloadFunction(document.update);
}

function AllowanceCopy(workerName,compenName,total) {

    console.log(workerName);
    console.log(compenName);
    console.log(total);

    var allowanceCopyTable = document.getElementById('allowance_copy');
    var tr = allowanceCopyTable.rows[1];

    for (var td = 0; td < tr.cells.length; td++) {
        td = tr.cells[td];


        if (td == 0) {
            td.firstChild.nodeValue = workerName;


        } else if (td == 1) {
            td.firstChild.nodeValue = compenName;


        } else if (td == 2) {
            td.firstChild.nodeValue = total;

        }

    }

    //windowを開く
    modalOpen("modal_allowanceCopy");

}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    16431questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • Java

    13791questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。