如何将函数内部的动态变量传递给其中的另一个函数
我正在尝试设置动态清算功能,我遇到了此代码的问题
var firstName = document.getElementById('firstName');
var lastName = document.getElementById('lastName');
var email = document.getElementById('Email');
function Clear(Vars) {
for (i = 0; i < Vars.length; i++) {
Vars[i].addEventListener("click", Clr, false);
Vars[i].addEventListener("oninput", Clr, false);
}
function Clr(){
Vars[i].setCustomValidity('');
Vars[i].style.removeProperty('border');
}
};
Clear([email, firstName, lastName]);
试图找到一种简单的方法来传递&#34; Vars [i]&#34;到第二个功能。
答案 0 :(得分:1)
function Clr(){
this.setCustomValidity('');
this.style.removeProperty('border');
}
使用此功能,或使用 let :
for (let i = 0; i < Vars.length; i++) {
function Clr(){
Vars[i].setCustomValidity('');
Vars[i].style.removeProperty('border');
}
Vars[i].addEventListener("click", Clr, false);
Vars[i].addEventListener("oninput", Clr, false);
}
答案 1 :(得分:1)
首先,您确定您的代码正常运行吗?
当for
循环结束时,i
值为Vars.length
。因此,在Clr
函数中,Vars[i]
应该是未定义的。
以下代码可能对您有所帮助:
var firstName = document.getElementById('firstName');
var lastName = document.getElementById('lastName');
var email = document.getElementById('Email');
function Clear(Vars) {
for (i = 0; i < Vars.length; i++) {
(function (i) {
Vars[i].addEventListener("click", Clr, false);
Vars[i].addEventListener("oninput", Clr, false);
function Clr(){
Vars[i].setCustomValidity('');
Vars[i].style.removeProperty('border');
}
})(i);
}
};
Clear([email, firstName, lastName]);