如何在innerHTML中编写Java代码

How to write Java code inside of innerHTML

本文关键字:Java 代码 innerHTML      更新时间:2023-09-26

我的需求如下。

  1. 每当用户单击"添加项"按钮时,应在表中添加一个新行。(表名:additionalInfoTable)
  2. 必须有三个单元格
  3. 前两个单元格必须有"文本"字段
  4. 第二个单元格必须具有带值列表的下拉列表

为此,我用Javascript编写了如下代码。但当我从Java ArrayList生成下拉值时,Java代码段并没有在InnerHTML中运行。

function addAdditionalRow() {
        var table = document.getElementById("additionalInfoTable");
        var row = table.insertRow(-1);
        var cell1 = row.insertCell(0);
        var cell2 = row.insertCell(1);
        var cell3 = row.insertCell(2);
        var cell4 = row.insertCell(3);
        cell1.innerHTML =   '<input type="text" size="15" name="additionalCost" />';
        cell2.innerHTML =   '<input type="text" size="15" name="totalCost" />';
        cell3.innerHTML =   '<select name="recoveryType">'+                             
                            '<option>--Select Recovery Type--</option>';
                            <% for(String recType: details.getRecoveryTypeList()) { %>
                            var recType = '<%=recType%>';
        cell3.innerHTML =   '<option value="'+recType+'">'+recType%+'</option>';
                            <%}%>
        cell3.innerHTML =   '</select>';    
      cell4.innerHTML =     '<input type="button" value="Delete" onclick="deleteRow(this)"/>';  
    }

下面是我为该表编写的JSP代码。

<table border ="1" width="100%" id="additionalInfoTable">
<thead>
    <tr>
        <td align="center" ><b>Additional Cost $</b></td>
        <td align="center" ><b>Total Cost</b></td>
        <td align="center" ><b>Recovery Type</b></td>
        <td align="center" ><b>Delete</b></td></tr>
    </tr>
</thead>        
    <tbody id="addBillbackdata">
        <tr>
            <td align="center">
              <input type="text" size="15" name="additionalCost" />
            </td>
            <td align="center">
              <input type="text" size="15" name="totalCost" />
            </td>
                <select name="recoveryType">
                    <option>--Select Recovery Type--</option>
                    <% for(String recType: details.getRecoveryTypeList()) { %>
                    <option value="<%=recType%>"><%=recType%></option>
                    <%}%>
                </select>
            </td>
            <td align="center">
              <input type="button" value="Delete" onclick="deleteRow(this)"/>
            </td>
        </tr>
    </tbody>
</table>

请帮助我在javascript 的innerHTML中获取Java ArrayList值

您的javascript会修改浏览器中的HTML。JSP代码在发送到浏览器之前在服务器端进行编译。在javascript中使用JSP代码是不可能的,因为浏览器无法解释它

  • 使用jsp创建所需的html,隐藏它(例如使用display:none),并使用javascript动态附加它
  • <script>-Tag中的jsp中创建一个全局javascript变量,并从按钮回调中引用它
  • 创建一个不同的jsp或servlet来传递数据,并使用AJAX进行请求