#java #javascript #jsp #jstl
#java #javascript #jsp #jstl
Вопрос:
Я новичок в HTML, Java, Javascript, JSP и JSTL.
У меня есть простая страница JSP, использующая JSTL в качестве библиотеки тегов. Когда я использовал javascript для получения всех значений строки a, щелкнув, все, что я могу получить, это значения первой строки, даже когда я нажимаю на 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 находятся на одной странице.
Пожалуйста, помогите. Заранее спасибо.
Ответ №1:
Каждый идентификатор должен быть уникальным в html, это ограничение, которое устанавливает html. Поэтому вам следует добавить некоторый идентификатор uniqe в ids ie. people.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>
Ответ №2:
document.getElementById($ID) вернет первый элемент в dom с указанным идентификатором (первая строка вашей таблицы).
Вы могли бы попробовать
<tr onMouseOver="this.className='highlight'" onMouseOut="this.className='normal'" onclick="getTblContents(this);" >
и вместо этого обратитесь к элементу «this». Нравится:
var pname = this.pname;
или
var pname = this.pname.innetHTML;
в javascript. и посмотрите, возвращает ли это правильную строку таблицы