我尝试使用DOM创建HTML元素。我需要将<li>
元素传递给toogle
方法,如下所示:
<ul>
<li onclick="toogle(this)"><a>Some text</a></li>
</ul>
&#13;
我该怎么做?
当前不起作用的代码:
var li = document.createElement("li");
li.onclick = toogle(this);
&#13;
答案 0 :(得分:2)
var li = document.createElement("li");
li.onclick = function () { toogle(this); };
答案 1 :(得分:1)
此:
li.onclick = toogle(this);
实际上执行toogle
函数,并将其返回值赋给onclick。如果你希望你的函数被称为单击处理程序,那么它应该是
li.onclick = toogle;
答案 2 :(得分:0)
你可以这样做:
var li = document.createElement("li");
li.addEventListener('click', toogle);
点击后会调用toogle
。这是更好的方法。
然后你可以使用:
获取元素function toogle(e) {
// "e.target" will represent the element
}
或者如果你想按自己的方式行事,那么你可以这样做:
var li = document.createElement("li");
li.onclick = toogle;
然后你得到了元素:
function toogle() {
// "this" will represent the element
}
答案 3 :(得分:0)
下面的代码段演示了如何传递使用event.target点击的元素。详细信息在源中进行了评论。
var li = document.createElement("li");
// Needs to be in DOM before you can click it
document.querySelector('ul').appendChild(li);
// Assigning class for testing
li.className = 'klass';
// Add click event for li
li.addEventListener('click', function(e) {
// event.target is always the element that was clicked
var tgt = e.target;
// Verifying that the li was passed
console.log(tgt.className);
// klass
}, false);
&#13;
li {
background: #000;
}
&#13;
<ul></ul>
&#13;