Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在传递对象数组-意外标记[ 功能showConfirm(后视){ var theHTML=''; var optionArray=[“选项1”、“选项2”、“选项3”、“选项4”、“选项5”、“选项6”、“选项7”]; var myButtons={}; var j=1; 对于(变量i=0;i_Javascript_Jquery - Fatal编程技术网

Javascript 正在传递对象数组-意外标记[ 功能showConfirm(后视){ var theHTML=''; var optionArray=[“选项1”、“选项2”、“选项3”、“选项4”、“选项5”、“选项6”、“选项7”]; var myButtons={}; var j=1; 对于(变量i=0;i

Javascript 正在传递对象数组-意外标记[ 功能showConfirm(后视){ var theHTML=''; var optionArray=[“选项1”、“选项2”、“选项3”、“选项4”、“选项5”、“选项6”、“选项7”]; var myButtons={}; var j=1; 对于(变量i=0;i,javascript,jquery,Javascript,Jquery,因此,该函数获得一个对象数组(reArray),然后为jquery对话框创建一个按钮数组(myButtons)。我试图将reArray[I]传递给每个按钮将使用的函数,该函数将执行plotRoadInfo(reArray[I]) 我不断得到“意外的令牌[”,我不明白为什么我的一生都是如此。为什么参数有索引 function showConfirm(reArray) { var theHTML = ''; var optionArray = ["Option 1", "Optio

因此,该函数获得一个对象数组(reArray),然后为jquery对话框创建一个按钮数组(myButtons)。我试图将reArray[I]传递给每个按钮将使用的函数,该函数将执行plotRoadInfo(reArray[I])


我不断得到“意外的令牌[”,我不明白为什么我的一生都是如此。

为什么参数有索引

function showConfirm(reArray) {

    var theHTML = '';
    var optionArray = ["Option 1", "Option 2", "Option 3", "Option 4", "Option 5", "Option 6", "Option 7"]; 
    var myButtons = {};
    var j = 1;

    for(var i = 0; i < reArray.length; i++){

                theHTML  +='<div style="text-align:center">' 
                         + '<span>'+j+'.</span>&nbsp;&nbsp;&nbsp;&nbsp;'
                         + '<span>'+reArray[i].RoadNo+'</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
                         + '<span>'+compass_image(reArray[i].Bearing)+'</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
                         + '</div><br/>'    

                j++;
        }

    for(i = 0; i < reArray.length; i++){

    ERROR HERE -----> var placeFunction = function(reArray[i]){

                                plotRoadInfo(reArray[i]);
                                $(this).dialog("close");
                            };

                            myButtons[optionArray[i]] = placeFunction;
    }

    $( "#dialog-modal" ).dialog({
      height: 300,
      modal: true,
      buttons: myButtons

    });

    $('#multipleRE').append(theHTML);
}
你是说

function(reArray[i])

为什么参数有索引

function showConfirm(reArray) {

    var theHTML = '';
    var optionArray = ["Option 1", "Option 2", "Option 3", "Option 4", "Option 5", "Option 6", "Option 7"]; 
    var myButtons = {};
    var j = 1;

    for(var i = 0; i < reArray.length; i++){

                theHTML  +='<div style="text-align:center">' 
                         + '<span>'+j+'.</span>&nbsp;&nbsp;&nbsp;&nbsp;'
                         + '<span>'+reArray[i].RoadNo+'</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
                         + '<span>'+compass_image(reArray[i].Bearing)+'</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'
                         + '</div><br/>'    

                j++;
        }

    for(i = 0; i < reArray.length; i++){

    ERROR HERE -----> var placeFunction = function(reArray[i]){

                                plotRoadInfo(reArray[i]);
                                $(this).dialog("close");
                            };

                            myButtons[optionArray[i]] = placeFunction;
    }

    $( "#dialog-modal" ).dialog({
      height: 300,
      modal: true,
      buttons: myButtons

    });

    $('#multipleRE').append(theHTML);
}
你是说

function(reArray[i])

您不需要在JavaScript中指定参数的类型,只需使用名称,然后在函数中将其用作数组

function(reArray)
var placeFunction = function() {
    plotRoadInfo(reArray[i]);
    $(this).dialog("close");
};
我认为您甚至不需要指定它,因为您指的是内部函数可以访问的数组

var placeFunction = function(reArray){
    plotRoadInfo(reArray[i]);
    $(this).dialog("close");
};
正如Pointy所指出的,这将导致共享
i
变量的问题,因此每个函数将引用
reArray[reArray.length]
因为循环将在
i===reArray.length
时完成。解决这一问题的常用方法是调用接受
i
作为参数返回函数的函数

function(reArray)
var placeFunction = function() {
    plotRoadInfo(reArray[i]);
    $(this).dialog("close");
};

阅读闭包,更深入地了解闭包是如何工作的。对于这种情况。

如果不在JavaScript中指定参数的类型,只需使用名称,然后将其用作函数中的数组

function(reArray)
var placeFunction = function() {
    plotRoadInfo(reArray[i]);
    $(this).dialog("close");
};
我认为您甚至不需要指定它,因为您指的是内部函数可以访问的数组

var placeFunction = function(reArray){
    plotRoadInfo(reArray[i]);
    $(this).dialog("close");
};
正如Pointy所指出的,这将导致共享
i
变量的问题,因此每个函数将引用
reArray[reArray.length]
因为循环将在
i===reArray.length
时完成。解决这一问题的常用方法是调用接受
i
作为参数返回函数的函数

function(reArray)
var placeFunction = function() {
    plotRoadInfo(reArray[i]);
    $(this).dialog("close");
};

阅读闭包,更深入地了解闭包是如何工作的。对于这种情况,您的语法是不正确的

我相信你想做的是:

var placeFunction = (function (item) {
    return function() {
        plotRoadInfo(item);
        $(this).dialog("close");
    };
}(reArray[i]));

您的语法不正确

我相信你想做的是:

var placeFunction = (function (item) {
    return function() {
        plotRoadInfo(item);
        $(this).dialog("close");
    };
}(reArray[i]));

你是
函数
子句是一个函数实例化。一个形式参数有这样的索引表达式是没有意义的。你是
函数
子句是一个函数实例化。一个形式参数有这样的索引表达式是没有意义的。但是,这可能不起作用,因为“i”在外部上下文中,所有“placeFunction”实例都会共享。感谢您的快速响应。我现在将尝试您的第一个建议。我尝试了第二个建议(无规范),并且没有任何对象属性传递给plotRoadInfo().Lemme现在使用另一个选项,我会再联系您。好的,@DanielImms,传递函数(reArray)消除了错误,但没有一个对象属性通过。例如,在plotRoadInfo()中;:
reArray.Lat
现在出现错误
无法读取未定义的属性“Lat”
。我更新了我的答案,它是
未定义的
,因为它指的是
reArray[reArray.length]
。我应该只传递
plotRoadInfo(reArray)
而不是传递[I],还是仍然需要指定我正在传递[i] 对象?但是,这可能不起作用,因为外部上下文中的“i”在所有“placeFunction”实例之间共享。感谢您的快速响应。我现在尝试您的第一个建议。我尝试了第二个建议(无规范),并且没有任何对象属性传递给plotRoadInfo().Lemme现在使用另一个选项,我会再联系您。好的,@DanielImms,传递函数(reArray)消除了错误,但没有一个对象属性通过。例如,在plotRoadInfo()中;:
reArray.Lat
现在出现错误
无法读取未定义的属性“Lat”
。我更新了我的答案,它是
未定义的
,因为它指的是
reArray[reArray.length]
。我应该只传递
plotRoadInfo(reArray)
而不是传递[I],还是仍然需要指定我正在传递[i] 目标?非常感谢你的帮助!非常感谢你的帮助!