作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从闭包函数中创建一些选择标记,并将一个事件附加到它们,该事件调用闭包中的另一个函数。
这是我的代码的一个非常简化的版本:
var SomeClosure = function() {
this.build = function(){
var mydiv = document.getElementById('mydiv');
var newSelect = document.createElement('select');
newSelect.onchange = (function() {
var selfRef = this;
return function() {
selfRef.changeselection();
}
})();
mydiv.appendChild(newSelect);
};
this.changeselection = function(){
// do something
}
}
然而,我得到的只是“selfRef.changeselection 不是一个函数”。我哪里出错了?
我不需要传入select的值,直接调用函数即可。但是,如果我确实也需要传递它的值,我该怎么做?
最佳答案
将代码更改为:
var selfRef = this;
newSelect.onchange = (function() {
return function() {
selfRef.changeselection();
}
})();
立即函数内的上下文是Window,所以你会得到错误的引用。同样在这种情况下,如果这是 onchange
事件处理程序的所有代码,您可能根本不需要 IIFE。
关于javascript - 对闭包内创建的事件调用闭包函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24885455/
我正在尝试对 StockData 表执行 OHCL sql 查询 (SQL Server 2012)。每天有数千行添加到表中,我想获取每天的开盘价、最高价、最低价和收盘价数据。 建表sql如下:
我是一名优秀的程序员,十分优秀!