如何将函数内部的动态变量传递到其中的另一个函数?

时间:2017-07-23 14:45:54

标签: javascript validation variables

如何将函数内部的动态变量传递给其中的另一个函数

我正在尝试设置动态清算功能,我遇到了此代码的问题

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;到第二个功能。

2 个答案:

答案 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]);