【发布时间】:2013-10-22 15:05:31
【问题描述】:
关于这个问题,我已经广泛浏览了互联网,包括 stackoverflow。 我的问题是我有一组“li”,当我使用 ctrl+click 手势时,我希望将多个“li”添加到数组中。我不断得到(e)未定义。我发现了这个:Detect CTRL and SHIFT key without keydown event?
但提供的答案似乎对许多人都有效,但对我却不适用。每当我使用它时,即使作为脚本中的唯一项目,萤火虫也不会在控制台中响应,但我得到:“ReferenceError:e 未定义。”我用的是火狐。
我最大的问题是让 this 将其添加到函数中,并且作为事件触发的函数可以区分 ctrl+click 和普通点击。
有任何专业知识可以帮助我吗? Vanilla Javascript 首选。
本练习的重点是在单击时删除 LI,但如果按住 ctrl,我想一次删除多个。也许通过将它们存储在数组中。 编辑:一些代码
<ul id = "ulItem">
<li>item1</li>
<li>item2</li>
<li>item3</li>
<li>item4</li>
</ul>
<script>
window.onload = function(){
var ulItem = document.getElementById("ulItem"); //gets UL with the "ulItem" ID.
var ulList = ulItem.getElementsByTagName("li"); //gets ulItem's "li" in an array.
///prepareLI function.///
var prepareLi = function(){
for(i = 0; i < ulList.length; i++){
ulList[i].addEventListener('click', elementClick);
}
}
//adds the same event listener to each of the "li" inside "UlList" array. Each activated by a click.
///elementClick function.///
var elementClick = function(){
ulItem.removeChild(this);
} //if this is a child of parent, UlList, remove it.
prepareLi();
}
【问题讨论】:
-
到目前为止你能发布你的代码吗? (最好在小提琴或类似的东西中)
-
@mookamafoob 最好不在小提琴中;代码必须进入问题,否则问题应该关闭。
-
实际上 :) 在这里发布您的代码,如果您希望我们将问题可视化并快速获得可靠的答案,那么小提琴就是如此。
-
@meagar 我的意思并不是完全在小提琴中:P 但一个例子更容易调试
-
您的
elementClick函数不接受任何参数。您没有正确遵循Detect CTRL and SHIFT key without keydown event? 中的示例。那里的例子有function(e) { ... },你的例子是function() { ... }。这就是为什么您会收到e is not defined的消息:该示例将e定义为参数,但您的代码从未定义e。
标签: javascript events click ctrl