Javascript 控制台日志上已打印的未定义变量

Javascript 控制台日志上已打印的未定义变量,javascript,jquery,each,Javascript,Jquery,Each,单击我希望弹出一个对话框按钮,对话框将有一个唯一的ID,并在其中有一个iframe。这是我的代码: $( ".insertDetailsDiv" ).click(function() { var idName = $(this).attr("id"); var idNameBase = idName.replace('DetailsButton', ''); var iframeSRC = idNameBase+".php";

单击我希望弹出一个对话框按钮,对话框将有一个唯一的ID,并在其中有一个iframe。这是我的代码:

$( ".insertDetailsDiv" ).click(function() {
        var idName = $(this).attr("id");
        var idNameBase = idName.replace('DetailsButton', '');

        var  iframeSRC = idNameBase+".php";
        $("<div class='idNameDialogDivClass'></div>").dialog();
        $(".idNameDialogDivClass").each(function() {
            $(this).uniqueId();
            var  idNameDialogDiv = $(this).attr("id");
            console.log(idNameDialogDiv);
        });

        $("<iframe></iframe>", { 
                id: idNameBase, 
                src: iframeSRC
        }).appendTo('#'+idNameDialogDiv);
});

我不明白,控制台日志输出变量,然后javascript无法识别变量

尝试在
函数的外部声明变量
idNameDialogDiv

$( ".insertDetailsDiv" ).click(function() {
        var idName = $(this).attr("id");
        var idNameBase = idName.replace('DetailsButton', '');
        var idNameDialogDiv = null;  // Declare here.

        var  iframeSRC = idNameBase+".php";
        $("<div class='idNameDialogDivClass'></div>").dialog();
        $(".idNameDialogDivClass").each(function() {
            $(this).uniqueId();
            idNameDialogDiv = $(this).attr("id");
            console.log(idNameDialogDiv);
        });

        $("<iframe></iframe>", { 
                id: idNameBase, 
                src: iframeSRC
        }).appendTo('#'+idNameDialogDiv);  // This was the place where the error was caused
});
$(“.insertDetailsDiv”)。单击(函数(){
var idName=$(this.attr(“id”);
var idNameBase=idName.replace('DetailsButton','');
var idNameDialogDiv=null;//在此处声明。
var iframeSRC=idNameBase+“.php”;
$(“”)。对话框();
$(“.idNameDialogDivClass”)。每个(函数(){
$(this.uniqueId();
idNameDialogDiv=$(this.attr(“id”);
console.log(idNameDialogDiv);
});
$("", { 
id:idNameBase,
src:iframeSRC
}).appendTo(“#”+idNameDialogDiv);//这是导致错误的地方
});

idNameDialogDiv是您在
$范围内定义的变量。每个
函数。在该街区外不可用

$(".idNameDialogDivClass").each(function() {        // <- function declaration
    $(this).uniqueId();
    var  idNameDialogDiv = $(this).attr("id");      // <- variable declaration
    console.log(idNameDialogDiv);
});

$(“.idNameDialogDivClass”).each(函数(){//可能在本部分中未定义::.appendTo('#'+idNameDialogDiv);是的,但是在创建之后不是被解析了吗?@Gamemorize将
var idnamedialdiodiv
移出
每个
函数。检查以确保类
idnamedialdiodivclass
中确实有元素。再次感谢,我接受了更快/更全面的答案,尽管如此,干杯!@Gamemorize:D很高兴为h大家好!有什么让我的代码总体上更好的建议吗?最糟糕的部分是什么?@Gamemorize
idNameDialogDiv=$(this.attr(“id”);
代码中的每一个都让我很恼火..因为id是一个独特的东西,我们不需要这样写代码...)
$(".idNameDialogDivClass").each(function() {        // <- function declaration
    $(this).uniqueId();
    var  idNameDialogDiv = $(this).attr("id");      // <- variable declaration
    console.log(idNameDialogDiv);
});