javascript - 调用 mylibray onclick 中的函数并传递此函数

标签 javascript function this

我的 onclick 调用有效。

<ul id="ul_name" onclick="javascript:mylibrary.ul_action(this);">

我不想在每个 ul 上手动添加调用,所以我尝试了这个:

window.onload = function() {
   var u = document.querySelectorAll(".myclass ul");
   var i;
   for (i = 0; i < u.length; i++) {
   u[i].onclick = mylibrary.ul_action(this);
   };
};

但是这不起作用。这个范围是不是错了?或者是什么?谢谢。

最佳答案

您正在立即调用该函数,并将返回值指定为您的点击事件处理程序。

您需要创建一个新函数,使用您想要的参数调用现有函数(这不是 this 因为您希望它成为元素):

window.onload = function() {

  var mylibrary = {
    ul_action: function(ul) {
      console.log(ul.innerText);
    }
  };

  var u = document.querySelectorAll(".myclass ul");
  var i;
  for (i = 0; i < u.length; i++) {
    u[i].onclick = mylibrary.ul_action.bind(window, u[i]);
  };
};
<main class="myclass">
  <ul>
    <li>One</li>
  </ul>
  <ul>
    <li>Two</li>
  </ul>
</main>

关于javascript - 调用 mylibray onclick 中的函数并传递此函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51591249/

相关文章:

javascript - "rejected promise not handled within 1 second"vscode 扩展 API

javascript - 为什么回调总是作为最后一个参数传递 JavaScript

javascript - 如何(最好)在作为回调传递的对象方法中访问 'this'

javascript - 如何排除 querySelectorAll() 中的特定类名?

javascript - SVG 路径渲染是否可以在 geometricPrecision 选项之外消除锯齿?

c++ - 将参数传递给没有特定顺序的 C++ 函数

javascript - 谷歌地图商店定位器将硬编码初始化修改为动态

javascript 对象、回调和 this 关键字

javascript - 调试 Java Stream() NullPointerException 原因的最佳方法

function - 返回 true/false 的 PowerShell 函数