我的 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/