javascript匿名函数传值问题

匿名函数里的对象,跟定义匿名函数页面的上下文有关,而与调用匿名函数的页面无关。

很拗口。举例说明:

//在某个“容器”页面
<div id="map_workspace"></div>
<script>
function showWorkSpace(callback, h) {
    var height = 500;
    callback("map_workspace",height);
}
</script>

//在该“容器”页面中的某个iframe页面
<script>
parent.showWorkSpace(function (containerId, h) {
    var container = $("#" + containerId);
    container.empty().html("<iframe class='frame frameMap' style='width:100%;height:" + h + ";' src='" + url + "'></iframe>");
});
</script>

匿名函数在iframe里定义,而在“容器”页面执行,而$(“#map_workspace”)对象很明显在“容器”页面上,但偏偏,没有获得我们预期的结果。改为:

//在某个“容器”页面
function showWorkSpace(callback, h) {
    var height = 500;
    callback($("#map_workspace"),height);
}

//在该“容器”页面中的某个iframe页面
parent.showWorkSpace(function (container, h) {
    container.empty().html("<iframe class='frame frameMap' style='width:100%;height:" + h + ";' src='" + url + "'></iframe>");
});

效果如愿。

什么道理,我也说不上来,仅作记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值