Javascript 为什么removeItem中不需要括号?为什么li.onclick=removietem必须在newItem()函数中? 为什么removeItem不需要括号 为什么li.onclick=removietem必须在newItem()函数中 li.onclick事件发生时的逻辑顺序是什么?是否执行newItem()?如果是,它是如何触发的
我认为只有enter键才会触发newItem(),既然li.onclick=removietem在newItem()内,为什么单击会触发它 免责声明:我在网上找到了这段代码,但我不了解这些细节,希望你们能帮忙。谢谢 htmlJavascript 为什么removeItem中不需要括号?为什么li.onclick=removietem必须在newItem()函数中? 为什么removeItem不需要括号 为什么li.onclick=removietem必须在newItem()函数中 li.onclick事件发生时的逻辑顺序是什么?是否执行newItem()?如果是,它是如何触发的,javascript,html,Javascript,Html,我认为只有enter键才会触发newItem(),既然li.onclick=removietem在newItem()内,为什么单击会触发它 免责声明:我在网上找到了这段代码,但我不了解这些细节,希望你们能帮忙。谢谢 html javascript function newItem() { var item = document.getElementById("input").value; var ul = document.g
javascript
function newItem() {
var item = document.getElementById("input").value;
var ul = document.getElementById("list");
var li = document.createElement("li");
if (document.getElementById("input").value != ""){
li.appendChild(document.createTextNode(item));
ul.appendChild(li);
document.getElementById("input").value = "";
}
li.onclick = removeItem;
}
document.body.onkeyup = function(e) {
if (e.keyCode == 13) {
newItem();
}
}
function removeItem(e) {
e.target.parentElement.removeChild(e.target);
}
为什么removeItem不需要括号
我想你指的是这行代码:
li.onclick = removeItem;
因为括号将调用函数并将其结果分配给li.onclick
。函数不返回任何内容,也没有结果,如果调用它而不提供它期望的事件参数,将导致错误
您没有调用函数,而是将函数的引用指定为li
对象的onclick
事件处理程序。稍后,如果用户单击该元素,则会调用该函数
为什么li.onclick=removietem必须在newItem()函数中
因为这就是变量的位置。您可以将onclick
处理程序分配到任何您喜欢的位置,但为了将其分配给特定对象,您需要位于对该对象有引用的范围内。在该函数之外没有li
变量,所以代码行没有意义
li.onclick事件发生时的逻辑顺序是什么?是否执行newItem()?如果是,它是如何触发的
不,将执行removietem()
。浏览器为其提供了对单击事件的引用,该事件将位于该函数内的e
变量中。这允许您引用e.target
以查找单击的元素
removietem()
被触发,因为上面第一个问题中的li.onclick
您不需要括号,因为您正在存储对函数的引用。稍后将调用该函数。请参见以下示例:
函数f1(){
console.log(“f1调用”);
}
var函数_存储=f1;
函数_存储()
只是为了澄清一下,onclick处理程序将在其放置的任何位置触发,但该项必须可用,换句话说,如果它是一个局部变量,onclick处理程序必须放置在该函数中?@newbie:它与作为onclick
处理程序没有任何关系。不能在不存在变量的范围内使用变量。li
变量是声明的,并且只存在于代码中的特定函数中,因此它只能在该函数中使用。