addEventListener JavaScript中定义的变量
在我的JS scirpt中有下面的代码。当我试图在代码下面打印任何已定义的变量时,控制台会说未定义变量。你能告诉我为什么吗?也许我应该先打电话给职能部门? 当我在下面定义变量并将其打印到控制台时,它工作得很好 代码如下:addEventListener JavaScript中定义的变量,javascript,variables,addeventlistener,Javascript,Variables,Addeventlistener,在我的JS scirpt中有下面的代码。当我试图在代码下面打印任何已定义的变量时,控制台会说未定义变量。你能告诉我为什么吗?也许我应该先打电话给职能部门? 当我在下面定义变量并将其打印到控制台时,它工作得很好 代码如下: document.addEventListener("DOMContentLoaded", function(){ var homeElement = document.getElementById("home"); var childElements =
document.addEventListener("DOMContentLoaded", function(){
var homeElement = document.getElementById("home");
var childElements = document.querySelector(".oferts").children;
var banner = document.querySelector(".ban");
var blocks = document.querySelectorAll(".block");
var links = document.querySelector(".links").children;
});
console.log(homeElement); //Here I got info that this variable is not defined
提前感谢您的帮助 尝试将变量记录在函数内部
document.addEventListener("DOMContentLoaded", function(){
var homeElement = document.getElementById("home");
var childElements = document.querySelector(".oferts").children;
var banner = document.querySelector(".ban");
var blocks = document.querySelectorAll(".block");
var links = document.querySelector(".links").children;
console.log(homeElement);// <--
});
document.addEventListener(“DOMContentLoaded”,function()){
var homelement=document.getElementById(“home”);
var childElements=document.querySelector(“.oferts”).children;
var banner=document.querySelector(“.ban”);
var blocks=document.queryselectoral(“.block”);
var links=document.querySelector(“.links”).children;
console.log(homelement);//这是因为变量是在事件侦听器函数的作用域中创建的,而console.log是在全局作用域中执行的。全局作用域无权访问变量作用域
您可以将console.log移动到函数中,也可以在函数外声明变量。这里有两个问题:
作用域内的var X
将该变量设置为局部变量(而不是全局变量),因此不能在作用域外使用它。
如果在全局中使用var X
,并且仅在范围内使用X=…
,则可以将变量设置为全局
根据您的代码,console.log
函数在addEventListener
的回调函数之前运行,因此在运行时,尚未设置变量
您可以在函数中创建变量,以便它们只能在函数中访问
要使全局变量可访问,只需将其更改为以下内容:
var homeElement;
var childElements;
var banner;
var blocks;
var links;
document.addEventListener("DOMContentLoaded", function(){
homeElement = document.getElementById("home");
childElements = document.querySelector(".oferts").children;
banner = document.querySelector(".ban");
blocks = document.querySelectorAll(".block");
links = document.querySelector(".links").children;
});
console.log(homeElement);
您的变量是在本地定义的,无法在函数外部访问
您可以删除var
关键字,使变量成为全局变量,并且可以在脚本中的任何位置调用变量
了解JavaScript作用域
因为console.log行是在DOM准备就绪并调用侦听器之前执行的。此外,您的变量似乎是该处理程序的本地作用域。实际上,我在编写其他应答时编写了此应答。我在发布我的应答后阅读了其他应答。我的应答有什么问题吗?我没有说它错了,只是在发布时没有说这里已经有3个答案这么说了(其中至少有一个这么说)。