如何在JSP中迭代逻辑中动态更改文本元素的id?

时间:2016-04-05 12:28:51

标签: javascript jquery html jsp struts

以下是我使用的代码:

<% int  number=0 %>  
<logic:iterate name="sample" id="sample1" property="lstWaferRequests" indexId="rowid"> 
<tr>
     <% number= (rowid.intValue())+1;%> 
<td>
    <html-el:text name="sample1" property="strExpDate" styleId='<%="Date"+number%>'/>   
</td>

<script>
    var x=document.getElementById("<%="Date"+number%>");
</script>

<a href="javascript:show_calendar(x,'');">
    <img src="images/calendar.gif" width="16" height="16" border="0" alt="Click Here to Pick up the timestamp"></a>
</td>
</tr>
</logic:iterate> 

我尝试增加一个变量(数字)并将其添加到sample1 textbox的id但是下一次迭代时id不会改变。我使用Inspect Element option in IE11检查了它。

我在javascript中使用setatttribute()方法来设置ID但是我收到了一个错误,

  

对象不支持setattribute方法。

我需要更改动态存储日期值(sample1)的文本框的ID ,因为我需要将其作为参数传递给show_calendar方法。

请告知。

2 个答案:

答案 0 :(得分:0)

我已将课程添加到您的textboxanchortag

通过您的链接,我了解您必须传递文本框的name属性而不是id

因此我添加了动态名称。这可以通过strExpDate<%=number%>实现。但我建议使用JSTL而不是scriptlet。 有关详细信息,请参阅java expert BalusC发布How to avoid Java code in JSP files?

更新 在你的逻辑迭代中,你必须像这样改变

<% int number=1 %>  
<logic:iterate name="sample" id="sample1" property="lstWaferRequests" > 
    <tr>
        <td>
            <html-el:text name="strExpDate<%=number%>" property="strExpDate" styleClass="dates" />   
        </td>
        <td>
            <a class="test" href="#">
                <img src="images/calendar.gif" width="16" height="16" border="0" alt="Click Here to Pick up the timestamp">
            </a>
        </td>
    </tr>
     <% number++; %>
</logic:iterate> 

在您的脚本中找到点击的锚标记和最近的文本框,其中包含类dates。我使用jQuery库,因为你标记了它。

$(document).ready(function() {
    $(".test").click(function(e) {
        var value = $(e.target).closest('tr').find('.dates').val();
        var name = $(e.target).closest('tr').find('.dates').attr('name');
        alert("Name : "+name+" Value : "+value);

        // You can call show_calendar() from here by passing name and value.
    });
});

请参阅Demo in fiddle。如果有任何澄清,请告诉我,希望这会有所帮助。

答案 1 :(得分:0)

将number变量转换为字符串并连接到indexId。 然后再次回到int。它应该工作