Javascript多维数组返回第一个值然后失败

时间:2014-11-26 16:30:08

标签: javascript jquery arrays svg multidimensional-array

我在var anzahl_der_SVGs中提示我的html文档中的所有svg-Elements。工作正常,它返回我应该的3。现在我想创建一个多维数组,我将存储几个svg-Element信息。结构是

[0] [0] - > svg的html代码

[0] [1] - >父容器的id

javascript代码是:

function getSVG(){

    var anzahl_der_SVGs = $('svg').size();
    alert(anzahl_der_SVGs);

    var svgArray    = new Array(anzahl_der_SVGs);
        svgArray[0] = new Array(2);

        $('svg').each(function( index ) {
            id = $(this).parent().parent().parent().parent().attr("id");
            var speichern = "widgetID" +id;
            svgArray[index][0] = $(this).html();
            svgArray[index][1] = speichern;
            alert(svgArray[index][0]);
            alert(svgArray[index][1]);
            $(this).attr("id", speichern);
        });
}

第一次迭代的警报工作正常,它显示了svg html和小部件ID。在下一次迭代中,它停止并给我控制台输出“TypeError:svgArray [index] is undefined”thx for any help :)来自德国的最佳问候

2 个答案:

答案 0 :(得分:2)

JavaScript没有多维数组。你所做的是为svgArray的第一个索引定义一个嵌套数组。您需要做的是为每个成员定义一个。

您可以在.each()循环中执行此操作。

$('svg').each(function( index ) {
    if (!svgArray[index]) {
        svgArray[index] = new Array(2)
    }

答案 1 :(得分:0)

创建一个对象数组会简单得多:

var svgArray = [];
var cpt = 0;
$('svg').each(function( index ) {
        id = $(this).parent().parent().parent().parent().attr("id");
        var speichern = "widgetID" +id;
        svgArray.push({html: $(this).html(), id : speichern});        
        alert(svgArray[cpt].html);
        alert(svgArray[cpt].id);
        $(this).attr("id", speichern);
        cpt++;
    });