当使用回调函数时,JavaScript如何从不再在DOM中的iframe访问元素?
How does JavaScript access elements from a iframe that is no longer in the DOM when using a callback function?
我不知道用语言来解释这个问题的最好方式,所以这里是我的问题的一个例子:http://jsfiddle.net/efZyt/
(iframe源代码在这里:http://jsfiddle.net/H6rLQ/)
- 点击"更改源"按钮。
- 重复几次
- 点击"重复文本"按钮。
你会收到一个提醒,它会把你每一步输入的文本读给你。
我有点困惑如何回调函数
function(){ alert($('#getSomeText').val()); }
在文本值存在之前被加载到回调数组中,该函数在值不再存在(或者更确切地说,存在于我找不到的地方)之后被调用,但它能够产生所有的值。
我不知道在哪里值被保存回调访问它们。iframe的整个实例是否作为闭包上下文保存在某个地方供回调运行或其他什么?
这就是JavaScript的魅力所在。值并没有像您想象的那样存储在任何地方!这就是"闭包"的神奇之处。
闭包的基本概念是,即使在它的作用域结束后,变量仍然存在。
例如:
function outerFunction() {
innerVar = function innerFunction() {
alert('hello');
}
return innerVar;
}
var outterVar = outerFunction();
outterVar();
上面将输出'hello'。注意,outerFunction已经执行完毕,'innerVar'的作用域也结束了;然而,有趣的是,我们仍然可以执行外部函数中定义的函数。
同样,当你将一个函数传递给父函数时。寄存器,你没有传递由'val()'获得的实际值;你正在传递一个函数,该函数稍后将被执行,并在内部充当闭包。
当它被执行时,它会使用'val()'来获取'closure'函数中存在的元素的值。
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- Windows形成web浏览器控件和Javascript更改的DOM
- Datatables:通过DOM数据源中的名称引用列
- 在DOM中查找一个模式并替换它's的内容使用jquery
- DOM事件通过JSON转换为java
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 将DOM节点值与字符串Javascript进行比较
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 流星中DOM的繁殖
- DOM元素和angular元素之间的主要区别是什么
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- 量角器 StaleElementReferenceError: 元素不再附加到 DOM
- Watir”;元素不再附加到DOM“;错误
- 如何删除不再绑定到dom的模型
- 当使用回调函数时,JavaScript如何从不再在DOM中的iframe访问元素?