数据修改的点击事件中的巧用源事件
利用循环去绑定同类的事件函数时,希望通过点击按钮引发的其他dom元素的数据等改变,但是this的指向指向本点击的按钮,很难获取到其他dom元素的函数名,利用函数名[i],是无法实现的,因为会形成闭包,但使用立即执行函数解决闭包问题时,相对会比较麻烦,所以利用源对象可以很好的解决
例如在一个查询表的修改数据事件中
当我们点击“修改”时,我们希望是先获得该按钮父级的父级一整行的有效数据,此时我们可以利用this指向修改按钮的特性,去获取列表里的数据。
但是在接下来的点击事件中由于闭包,我们无法对每一个点击事件准确的绑定了,也无法在利用this,此时this指向“确定”这个按钮,=确定与表格在Html结构中关系没法判定,所以就无法将修改完的数据,有存到表格里,但是我们在上一步先获取是就利用事件源对象,那么dom元素就会被确定
function reviseFn(e) {
// 利用事件的源对象
var event=e||window.event;
var target=event.target||event.srcElement;
利用事件源对象先提取
var inputBox1 = document.createElement("input");
inputBox1.value = target.parentElement.parentElement.children[2].innerText;
那么接下来的就可以利用变量target去完成上述数据值的重新存入
buttonBox1.onclick = function () {
target.parentElement.parentElement.children[2].innerText=inputBox1.value;
document.body.removeChild(bigestDiv);
}