无法解释的参数传递到JavaScript函数中,这是我缺少的基本参数
在过去的一个月里,我一直在自学JavaScript,但并不是非常一贯,因为我的工作到处都是,当我停工时,我的工作就是为我们的销售团队进行扩展 现在我没有一个我无法解决的具体问题,但我有一个问题让我觉得javascript中的函数有一些非常不同的地方,我仍然缺少 请看这段代码,我将解释是什么让我感到困惑:无法解释的参数传递到JavaScript函数中,这是我缺少的基本参数,javascript,google-chrome-extension,Javascript,Google Chrome Extension,在过去的一个月里,我一直在自学JavaScript,但并不是非常一贯,因为我的工作到处都是,当我停工时,我的工作就是为我们的销售团队进行扩展 现在我没有一个我无法解决的具体问题,但我有一个问题让我觉得javascript中的函数有一些非常不同的地方,我仍然缺少 请看这段代码,我将解释是什么让我感到困惑: function click(e) { var selection = e.target.id; } document.addEventListener('DOMContentLoaded
function click(e) {
var selection = e.target.id;
}
document.addEventListener('DOMContentLoaded', function () {
var divs = document.querySelectorAll('div');
for (var i = 0; i < divs.length; i++) {
divs[i].addEventListener('click', click);
}
});
但我不明白幕后到底发生了什么,才让这种情况发生
另一个例子是在以下位置传递的消息:
我不清楚这个例子中的“response”来自何方,就像另一个例子中的“e”一样。如果有人能帮我解开谜团,我将不胜感激。我愿意学习,但我还没有找到一个很好的解释 事件对象由浏览器本身通过函数传递 如果存在一个事件,并且附加了相应的事件处理程序,浏览器将调用该事件处理程序,并将带有一些(或多或少)事件相关信息的事件对象传递给事件处理程序 关于你的第一个例子: 首先,以常规方式定义函数
click(e)
然后注册两个事件处理程序:
DOMContentLoaded
事件,单击多个
元素上的事件
document.addEventListener('DOMContentLoaded', function () {
// do stuff here
});
这里省略事件对象,因为它可能不需要
在第二种情况下,
元素都获得相同的事件处理程序,即单击(e)
然而,在这里,事件对象作为参数被函数捕获,因为它在函数体中是必需的
通常,在JavaScript中,您不必在函数声明或函数调用中定义所有参数。您只需定义所需的参数,并按照给定的顺序应用它们。这就是为什么在第一个事件处理程序的定义中,可以省略事件对象的参数而不出现任何错误。事件对象由浏览器本身通过函数传递 如果存在一个事件,并且附加了相应的事件处理程序,浏览器将调用该事件处理程序,并将带有一些(或多或少)事件相关信息的事件对象传递给事件处理程序 关于你的第一个例子: 首先,以常规方式定义函数
click(e)
然后注册两个事件处理程序:
DOMContentLoaded
事件,单击多个
元素上的事件
document.addEventListener('DOMContentLoaded', function () {
// do stuff here
});
这里省略事件对象,因为它可能不需要
在第二种情况下,
元素都获得相同的事件处理程序,即单击(e)
然而,在这里,事件对象作为参数被函数捕获,因为它在函数体中是必需的
通常,在JavaScript中,您不必在函数声明或函数调用中定义所有参数。您只需定义所需的参数,并按照给定的顺序应用它们。这就是为什么在第一个事件处理程序的定义中,可以省略事件对象的参数,而不会出现任何错误。浏览器会调用
click
函数来响应click事件。浏览器将适当的事件对象作为第一个参数传递
另外,您认为
e
可以是任何东西也是正确的。您可以为参数指定任何(合法)名称 浏览器响应单击事件调用单击
功能。浏览器将适当的事件对象作为第一个参数传递
另外,您认为
e
可以是任何东西也是正确的。您可以为参数指定任何(合法)名称 我来自C和Verilog的背景,所以我的大脑对我大喊大叫,说你能做些什么,但这是有意义的=)我来自C和Verilog的背景,所以我的大脑对我大喊大叫,说你能做些什么,但这是有意义的=)
document.addEventListener('DOMContentLoaded', function () {
// do stuff here
});
divs[i].addEventListener('click', click);