JSP-JSTL表仅选择表的第一行

时间:2011-10-20 06:16:48

标签: java javascript jsp jstl

我是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在同一页面上。

请帮忙。提前谢谢。

2 个答案:

答案 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中。并查看是否返回表格的右侧