jQuery在内联onclick中传递对象

时间:2017-10-31 19:00:03

标签: javascript jquery

如何将 0 1 2 3 4 5 6 \ A -0.029027 -0.530398 -0.866021 1.331116 0.090178 1.044801 -1.586620 C 1.320105 1.244250 -0.162734 0.942929 -0.309025 -0.853728 1.606805 B -1.683822 1.015894 -0.178339 -0.958557 -0.910549 -1.612449 NaN 7 8 9 10 A -1.072210 1.654565 -1.188060 NaN C 1.642461 -0.137037 -1.416697 -0.349107 B NaN NaN NaN NaN 传递给内联object。当我尝试使用代码时,我会获得onclick eventundefined

我如何将点击事件绑定到[object object]以避免内联代码。

h

2 个答案:

答案 0 :(得分:3)

我在代码中看到的一些问题,

  1. 您的循环应为i < robj.length且语法错误,应为;
  2. h未定义,但现在不再使用
  3. 使用get()
  4. 无法访问传递到o.foo的数组

    附注:请查看ES6 template literals以帮助清理您当前正在执行的部分引用操作,例如id="' + fname + '"可能看起来像id="${fname}"

    这是一个完整的工作示例,上面有关于如何向div添加侦听器(通过创建DOM元素)以及将对象作为参数的修复。

    this.get = function(o) {
      console.log(o);
      console.log(o.foo);
    }
    
    this.somefunction = function(robj) {
      for (let i = 0; i < robj.length; i++) {
        var fname = robj[i]['filename']
        var myDiv = document.createElement("div");
        myDiv.className = "checkbox checkbox-success";
        myDiv.onclick  = function(){get(robj[i])};
        myDiv.innerHTML =
          '<input id="' + fname + '" type="checkbox" class="styled"> ' +
          '<label for="' + fname + '"><a data-fancybox-next class="button-next" href="#">' + fname + '</a></label>';
        document.getElementById("container").appendChild(myDiv);
      }
    }
    var robj = [{filename: "myFilename", foo: "myFoo"}]
    somefunction(robj);
    <div id="container"></div>

答案 1 :(得分:1)

这是动态编写onclick的示例。只需将功能保持在doucment.ready

之外

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>

    function changePath(distinct_inputs)
    {
        console.log(distinct_inputs);
    }
    
     
$(document).ready(function(){

     
var distinct_inputs = 0;
    $('.icon1').click( function(){
        distinct_inputs = distinct_inputs + 1 ;
        $('#insert-file').append('<ul class="ul list-inline"><li style="width:90%"><input onchange="changePath('+distinct_inputs+')" type="file" class="base'+distinct_inputs+' form-control form-input form-style-base"><input  type="text" class="fake'+distinct_inputs+' form-control form-input form-style-fake" readonly placeholder="choose your file"><span class="glyphicon glyphicon-open input-place"></span></li><li class="icon fa fa-minus"></li></ul>');
    });

});
</script>
</head>
<body>
<div id="insert-file" ></div>
<button type="button" class="icon1">CLick here</button>

</body>
</html>