Javascript 如何从事件侦听器内部调用类函数?
我试图建立我的Javascript 如何从事件侦听器内部调用类函数?,javascript,class,events,scope,Javascript,Class,Events,Scope,我试图建立我的JavaScript知识库,当类的对象的文本框中触发事件时,调用类中的函数有困难。我认为这将涉及范围问题,但我不完全确定。在C#中这样做要容易得多 class FilterableDropdown{ 建造商(集装箱){ this.ContainerID=ContainerID; this.Container=document.getElementById(containerID); this.Container.innerHTML+=“” //添加子控件。 this.Textbo
JavaScript
知识库,当类的对象的文本框中触发事件时,调用类中的函数
有困难。我认为这将涉及范围问题,但我不完全确定。在C#
中这样做要容易得多
class FilterableDropdown{
建造商(集装箱){
this.ContainerID=ContainerID;
this.Container=document.getElementById(containerID);
this.Container.innerHTML+=“”
//添加子控件。
this.Textbox=document.getElementById(“txt-”+containerID+“-下拉菜单”);
//将事件添加到子控件。
this.Textbox.addEventListener(“keyup”,this.Filter);
}
过滤器(){
警报(此为集装箱运输);
}
}
var下降=新的可过滤下降(“fd测试”)代码>
.filterable下拉列表>输入[类型=文本]{
填充物:5px;
边界:无;
边框底部:2个实心#333;
边框左上半径:5px;
边框右上角半径:5px;
背景色:#3332;
颜色:#eee;
}
.filterable下拉列表>输入[type=text]:焦点{背景色:#3338;}
*:focus{outline:none;}
您需要将this
绑定到过滤器
方法。this
应该指向类实例
这可以通过使用Array.prototype.bind(thisContext)
实现,其中thisContext
将是您的类FilterableDropdown
实例:
class FilterableDropdown{
建造商(集装箱){
this.ContainerID=ContainerID;
this.Container=document.getElementById(containerID);
this.Container.innerHTML+=“”
//添加子控件。
this.Textbox=document.getElementById(“txt-”+containerID+“-下拉菜单”);
//将其绑定到Filter方法
this.Textbox.addEventListener(“keyup”,this.Filter.bind(this));
}
过滤器(){
警报(此为集装箱运输);
}
}
var下降=新的可过滤下降(“fd测试”)代码>
.filterable下拉列表>输入[类型=文本]{
填充物:5px;
边界:无;
边框底部:2个实心#333;
边框左上半径:5px;
边框右上角半径:5px;
背景色:#3332;
颜色:#eee;
}
.filterable下拉列表>输入[type=text]:焦点{背景色:#3338;}
*:focus{outline:none;}
您需要将this
绑定到过滤器
方法。this
应该指向类实例
这可以通过使用Array.prototype.bind(thisContext)
实现,其中thisContext
将是您的类FilterableDropdown
实例:
class FilterableDropdown{
建造商(集装箱){
this.ContainerID=ContainerID;
this.Container=document.getElementById(containerID);
this.Container.innerHTML+=“”
//添加子控件。
this.Textbox=document.getElementById(“txt-”+containerID+“-下拉菜单”);
//将其绑定到Filter方法
this.Textbox.addEventListener(“keyup”,this.Filter.bind(this));
}
过滤器(){
警报(此为集装箱运输);
}
}
var下降=新的可过滤下降(“fd测试”)代码>
.filterable下拉列表>输入[类型=文本]{
填充物:5px;
边界:无;
边框底部:2个实心#333;
边框左上半径:5px;
边框右上角半径:5px;
背景色:#3332;
颜色:#eee;
}
.filterable下拉列表>输入[type=text]:焦点{背景色:#3338;}
*:focus{outline:none;}
您要做的是使用
this.Textbox.addEventListener("keyup", this.Filter.bind(this));
class FilterableDropdown{
建造商(集装箱){
this.ContainerID=ContainerID;
this.Container=document.getElementById(containerID);
this.Container.innerHTML+=“”
//添加子控件。
this.Textbox=document.getElementById(“txt-”+containerID+“-下拉菜单”);
//将事件添加到子控件。
this.Textbox.addEventListener(“keyup”,this.Filter.bind(this));
}
过滤器(){
警报(此为集装箱运输);
}
}
var下降=新的可过滤下降(“fd测试”)代码>
.filterable下拉列表>输入[类型=文本]{
填充物:5px;
边界:无;
边框底部:2个实心#333;
边框左上半径:5px;
边框右上角半径:5px;
背景色:#3332;
颜色:#eee;
}
.filterable下拉列表>输入[type=text]:焦点{背景色:#3338;}
*:focus{outline:none;}
您要做的是使用
this.Textbox.addEventListener("keyup", this.Filter.bind(this));
class FilterableDropdown{
建造商(集装箱){
this.ContainerID=ContainerID;
this.Container=document.getElementById(containerID);
this.Container.innerHTML+=“”
//添加子控件。
this.Textbox=document.getElementById(“txt-”+containerID+“-下拉菜单”);
//将事件添加到子控件。
this.Textbox.addEventListener(“keyup”,this.Filter.bind(this));
}
过滤器(){
警报(此为集装箱运输);
}
}
var下降=新的可过滤下降(“fd测试”)代码>
.filterable下拉列表>输入[类型=文本]{
填充物:5px;
边界:无;
边框底部:2个实心#333;
边框左上半径:5px;
边框右上角半径:5px;
背景色:#3332;
颜色:#eee;
}
.filterable下拉列表>输入[type=text]:焦点{背景色:#3338;}
*:focus{outline:none;}