以下是我使用的代码:
<% 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
方法。
请告知。
答案 0 :(得分:0)
我已将课程添加到您的textbox
和anchortag
。
通过您的链接,我了解您必须传递文本框的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。它应该工作