Javascript 这不是在单击事件侦听器中使用的函数
我正在处理一个javascript文件,代码如下Javascript 这不是在单击事件侦听器中使用的函数,javascript,Javascript,我正在处理一个javascript文件,代码如下 class test(){ constructor(){ } showBox(){ var countBlock = document.createElement("div"); document.body.appendChild(countBlock); countBlock.addEventListener('click', function(){
class test(){
constructor(){
}
showBox(){
var countBlock = document.createElement("div");
document.body.appendChild(countBlock);
countBlock.addEventListener('click', function(){
this.showList()
});
}
showList(){
console.log('Element clicked')
}
}
除非我单击元素,否则代码工作正常,当我单击它时,它会显示这个。showList不是一个函数
不确定如何解决此问题请使用:
Arrow函数以词汇形式绑定其上下文,因此它引用原始上下文,即包含Arrow函数的代码的上下文
或者使用常规函数,但将包含此函数的函数绑定到您的函数:
countBlock.addEventListener('click', function () { this.showList() }.bind(this));
// or shorter, no need to wrap it in a function:
countBlock.addEventListener('click', this.showList.bind(this));
你可以阅读更多关于这方面的内容
以下是基于您的代码的示例:
课堂测试{
陈列柜{
const countBlock=document.createElement'p';
document.body.appendChildcountBlock;
countBlock.addEventListener'click',=>this.showList;
}
展示清单{
console.log'Element clicked'
}
}
新的测试展示箱;
p{
宽度:20px;
高度:20px;
背景:黑色;
光标:指针;
} 使用一个:
Arrow函数以词汇形式绑定其上下文,因此它引用原始上下文,即包含Arrow函数的代码的上下文
或者使用常规函数,但将包含此函数的函数绑定到您的函数:
countBlock.addEventListener('click', function () { this.showList() }.bind(this));
// or shorter, no need to wrap it in a function:
countBlock.addEventListener('click', this.showList.bind(this));
你可以阅读更多关于这方面的内容
以下是基于您的代码的示例:
课堂测试{
陈列柜{
const countBlock=document.createElement'p';
document.body.appendChildcountBlock;
countBlock.addEventListener'click',=>this.showList;
}
展示清单{
console.log'Element clicked'
}
}
新的测试展示箱;
p{
宽度:20px;
高度:20px;
背景:黑色;
光标:指针;
} this.showList不在测试类的作用域内,因为您将其包装在匿名函数中。
这样做:
class test{
constructor(){
}
showBox(){
var countBlock = document.createElement("div");
document.body.appendChild(countBlock);
countBlock.addEventListener('click', this.showList);
}
showList(){
console.log('Element clicked')
}
}
this.showList不在测试类的作用域内,因为您将其包装在匿名函数中。
这样做:
class test{
constructor(){
}
showBox(){
var countBlock = document.createElement("div");
document.body.appendChild(countBlock);
countBlock.addEventListener('click', this.showList);
}
showList(){
console.log('Element clicked')
}
}
类测试{似乎是错误的,其次使用arrow函数绑定这个
课堂测试{
构造函数{}
陈列柜{
console.log'Show Box Executed'
var countBlock=document.createElementdiv;
设txt=document.createTextNode'Div';
countBlock.appendChildtxt;
document.body.appendChildcountBlock;
countBlock.addEventListener'click',=>{
这是一个展示列表
};
}
展示清单{
console.log'Element clicked'
}
}
设t=新试验;
_t、 showBox;类测试{似乎是错误的,其次使用arrow函数绑定这个
课堂测试{
构造函数{}
陈列柜{
console.log'Show Box Executed'
var countBlock=document.createElementdiv;
设txt=document.createTextNode'Div';
countBlock.appendChildtxt;
document.body.appendChildcountBlock;
countBlock.addEventListener'click',=>{
这是一个展示列表
};
}
展示清单{
console.log'Element clicked'
}
}
设t=新试验;
_t、 showBox;在事件侦听器的上下文中,这是您单击的元素。您在JS中不理解这一点。它不像java。在事件侦听器的上下文中,这是您单击的元素。您在JS中不理解这一点。它不像java。谢谢,这是一个快速而完美的解决方案。您能推荐一些给我吗关于javascript的文章或教程,我在jQuery中工作,只掌握Java方面的基本知识javaScript@VikramSingh,不客气,JavaScript的一个很好的参考是,我发现它非常有用,否则,MDN的文档也很好。谢谢,这是一个快速而完美的解决方案。你能为我推荐一些文章或教程吗javascript,我在jQuery中工作,只掌握Java方面的基本知识javaScript@VikramSingh,不客气,JavaScript的一个很好的参考是,我发现它非常有用,否则,MDN的文档也很好。