如何检索在 JavaScript 中触发事件的 html 对象的引用?
How to retrieve the reference to an html object the fired an event in JavaScript?
我是 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();
}
问题是,在这个函数中,我必须检索触发更改事件的 input 对象是什么(我认为类似于 this)
如何在我之前的 changeCheckbox() 函数中获取对已单击复选框的引用?
该元素在事件处理程序内容属性中可用,但在 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" />
我是 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();
}
问题是,在这个函数中,我必须检索触发更改事件的 input 对象是什么(我认为类似于 this)
如何在我之前的 changeCheckbox() 函数中获取对已单击复选框的引用?
该元素在事件处理程序内容属性中可用,但在 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" />