我收到了这个有效的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);
};
};
但是它不起作用。这是范围错误吗?还是什么?谢谢。
答案 0 :(得分:1)
您正在立即调用该函数,并将返回值分配为您的click
事件处理程序。
您需要创建一个新函数,以所需的参数调用现有函数(不是 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>