【问题标题】:Variable inside window.opener is undefinedwindow.opener 中的变量未定义
【发布时间】:2016-08-03 14:44:57
【问题描述】:

我有一个非常简单的页面,其中显示了一些缩略图,我想单击它们以显示放大的图像。

所以我在主页中为对象类“.pic”设置了一个点击功能:

$(".pic").click( function() {
    var img_data = {};
    img_data.img_name= $(this).attr("src");
    img_data.img_caption= $(this).attr("alt");
    var img_win=window.open("apri_foto.html","_blank","height=600"); 
});

这是进入子窗口的代码

$(document).ready(function() {
    var data=window.opener.img_data;
    alert (data);
}); 

现在的问题是子窗口中的变量是未定义的。 我也尝试过逆向,即从父目录设置,但它不起作用。我现在很容易,但我真的不明白我错在哪里。为了预料到这个问题,打开的页面来自同一个域(它在同一个文件夹中)。 你能帮帮我吗?

【问题讨论】:

    标签: javascript jquery scope


    【解决方案1】:

    您的问题是 img_data 变量的范围:它是本地的。您需要将其放在全局范围内,否则单击处理程序退出时它将被销毁。这意味着您需要在任何函数之外定义它:

    var img_data = {};
    
    $(".pic").click( function() {
        img_data.img_name= $(this).attr("src");
        img_data.img_caption= $(this).attr("alt");
        var img_win=window.open("apri_foto.html","_blank","height=600"); 
    });
    

    More about scope

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-25
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 2021-02-27
      • 2015-06-01
      相关资源
      最近更新 更多