我是JavaScript的新手,我有以下问题。在JSP页面中我有这样的东西:
<tbody>
<c:forEach items="${listaProgetti.lista}" var="progetto" varStatus="itemProgetto">
<tr id='<c:out value="${progetto.prgPro}" />'>
<td><input type="checkbox" class="checkbox" onchange="changeCheckbox()"></td>
.....................................................
.....................................................
.....................................................
</tr>
</c:forEach>
</tbody>
所以你可以看到点击复选框,它叫做 changeCheckbox()实际上非常简单:
function changeCheckbox() {
alert("INTO changeCheckbox()");
var checkedRowList = new Array();
}
问题是,在这个函数中,我必须检索触发更改事件的输入对象(我认为像这个)
如何获取之前 changeCheckbox()功能中所点击复选框的引用?
答案 0 :(得分:6)
该元素在事件处理程序内容属性中可用,而不在changeCheckbox
中。但你可以将它作为论据传递。
使用this
changeCheckbox(this)
function changeCheckbox(elem) {
elem.style.marginLeft = '100px';
}
<input type="checkbox" onchange="changeCheckbox(this)" />
使用event
:
changeCheckbox(event.target)
function changeCheckbox(elem) {
elem.style.marginLeft = '100px';
}
<input type="checkbox" onchange="changeCheckbox(event.target)" />
请注意,最好使用addEventListener
:
document.querySelector('input').addEventListener('change', changeCheckbox);
然后函数changeCheckbox
将接收事件对象作为其第一个参数,并将当前目标元素作为this
值。
document.querySelector('input').addEventListener('change', changeCheckbox);
function changeCheckbox(e) {
e.target.style.marginLeft = '100px';
}
<input type="checkbox" />