我是HTML,Java,Javascript,JSP和JSTL的新手。
我有一个简单的JSP页面,使用JSTL作为我的标记库。当我使用javascript获取行的所有值时,通过单击所有我可以得到的是第一行的值,即使我单击第2行,第3行或第n行。我想只获得我点击的行。
在我的javascript中:
<script type="text/javascript" >
function getTblContents() {
var pName = document.getElementById("pName").innerHTML;
var pAddress = document.getElementById("pAddress").innerHTML;
var pEmail = document.getElementById("pEmail").innerHTML;
alert(pName + " " + pAddress + " " + pEmail);
}
</script>
我的jstl代码:
<c:forEach var="people" items="${people.data}" varStatus="status">
<tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" onclick="getTblContents();" >
<td id="pName" >${people.name}</td>
<td id="pAddress" >${people.address}</td>
<td id="pEmail" >${people.email}</td>
</tr>
</c:forEach>
javascript和jsp在同一页面上。
请帮忙。提前谢谢。
答案 0 :(得分:1)
每个id在html中必须是唯一的,它是html设置的限制。所以你应该添加一些 unqe标识符为ids即。 people.id并将该id转换为javascript函数。
<script type="text/javascript" >
function getTblContents(id) {
var pName = document.getElementById("pName-"+id).innerHTML;
var pAddress = document.getElementById("pAddress-"+id).innerHTML;
var pEmail = document.getElementById("pEmail-"+id).innerHTML;
alert(pName + " " + pAddress + " " + pEmail);
}
</script>
<c:forEach var="people" items="${people.data}" varStatus="status">
<tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" onclick="getTblContents('${people.id}');" >
<td id="pName-${people.id}" >${people.name}</td>
<td id="pAddress-${people.id}" >${people.address}</td>
<td id="pEmail-${people.id}" >${people.email}</td>
</tr>
</c:forEach>
答案 1 :(得分:0)
document.getElementById($ ID)将返回dom中具有指定id(表的第一行)的第一个元素。
你可以试试
<tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" onclick="getTblContents(this);" >
并改为引用“this”元素。像:
var pname = this.pname;
或
var pname = this.pname.innetHTML;
在javascript中。并查看是否返回表格的右侧