1

私は次のようなjspコードを書いています:

<%
    out.println("<div id=\""+rs.getString(2)+"\" align=\"center\"  onclick=\"showDialog()\" style=\"float:left;background-color:#b4cde6; height: 150px; width: 200px;margin:20px \">");

            out.println("<p style=\"background-color:#ffffff;width:200px;\">NAME-"
                            + rs2.getString(2) + "</p>");

                    /* out.println("<input type=\"submit\" value=\""
                    + rs.getString(2) + "\" name=\"group\">");
                     */
                    out.println("<a  name=\"class_start\" value=\""
                            + rs.getString(1)
                            + "\"  style=\"background-color:#B4CDE6;width:200px;\" href=\"http://localhost:8080/ClassKarma_1/angular-gauge.jsp\">"+rs.getString(5)+"</a>");
        %>
    </div>

ここでは < div> の ID を動的に追加していますが、次のように JavaScript で ID を含むアラートを表示しようとすると、次のようになります。

function showDialog() {
alert(this.id+" ID");
    };

未定義の Id を持つアラートが表示されます。私はこれが初めてです(私が使用している手法が完全に間違っている可能性があります)。誰でもこれを解決するのを手伝ってくれますか?

アップデート

生成されたhtmlはこんな感じ。完璧だと思います。

          <div  style="background-color:#fffff;overflow:hidden; height:800px; width: 800px;">
        <div id="1" align="center"  onclick="showDialog()" style="float:left;background-color:#b4cde6; height: 150px; width: 200px;margin:20px "><p style="background-color:#ffffff;width:200px;">NAME-Saurabh</p><a  name="class_start" value="1"  style="background-color:#B4CDE6;width:200px;" href="http://localhost:8080/ClassKarma_1/angular-gauge.jsp">3</a></div>   <div id="2" align="center"  onclick="showDialog()" style="float:left;background-color:#b4cde6; height: 150px; width: 200px;margin:20px "><p style="background-color:#ffffff;width:200px;">NAME-Syed</p><a  name="class_start" value="1"  style="background-color:#B4CDE6;width:200px;" href="http://localhost:8080/ClassKarma_1/angular-gauge.jsp">1</a></div>
4

2 に答える 2

1

showDialog関数内では、 のように関数を通常どおり呼び出しているため、thisを参照します。要素を参照したい場合は、 [MDN]を使用する必要があります:windowshowDialog()this.call

onclick=\"showDialog.call(this, event)\"

の詳細this:

または、要素を引数として関数に渡すことができます。

onclick=\"showDialog(this)\"

function showDialog(element) {
    alert(element.id);
}
于 2013-06-04T07:30:03.333 に答える