代码之家  ›  专栏  ›  技术社区  ›  digitalsuite.net

JQuery传递参数作为2个函数中的变量返回未定义的

  •  0
  • digitalsuite.net  · 技术社区  · 8 年前

    我有下面的代码,我不知道为什么它在视图和单击函数中返回未定义的TrackingID[I]。。。我想填充一个数组,代码应该遍历每个数组索引,并检查元素是否悬停或单击。第一个函数中的el\u id和trackingIds[i]返回正确的值。我很感激任何帮助,因为我似乎无法解决这个问题。

    jQuery(document).ready(function(){
    var trackingIds = ["elementid"];
    
    for(i=0; i<trackingIds.length; i++){
        var el_id = jQuery('#'+trackingIds[i]);
        console.log(el_id);
        console.log(trackingIds[i]);
        el_id.click(function() { Click(trackingIds[i]);});
        el_id.mouseover(function() { View(trackingIds[i]);});
    }
    });
    
    function Click(a) {
     //do stuff...
     console.log("Click was called from:"+a);
    }
    
    function View(b){
     // do stuff..
     console.log("View was called from:"+b)
    }
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   Ele    8 年前

    您需要使用 let 在您的 for-loop .

    jQuery(document).ready(function() {
      var trackingIds = ["elementid"];
    
      for (let i = 0; i < trackingIds.length; i++) {
        var el_id = jQuery('#' + trackingIds[i]);
        //console.log(el_id);
        //console.log(trackingIds[i]);
        el_id.click(function() {
          Click(trackingIds[i]);
        });
        
        el_id.mouseover(function() {
          View(trackingIds[i]);
        });
      }
    });
    
    function Click(a) {
      //do stuff...
      console.log("Click was called from: " + a);
    }
    
    function View(b) {
      // do stuff..
      console.log("View was called from: " + b)
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <h1 id='elementid'>Click me!</h1>

    资源

    • let

      这个 允许 语句声明块作用域局部变量,可以选择将其初始化为值。