【问题标题】:Javascript multidimensional array returns first value and then failsJavascript多维数组返回第一个值然后失败
【发布时间】:2014-11-26 16:30:07
【问题描述】:

我正在 var anzahl_der_SVGs 中从我的 html 文档中计算所有 svg 元素。效果很好,它应该返回我 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”感谢任何帮助:)来自德国的问候

【问题讨论】:

    标签: javascript jquery arrays svg multidimensional-array


    【解决方案1】:

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

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

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

    【讨论】:

    • 您的言论具有误导性。 Javascript 当然可以有多维数组; OP 只是没有正确创建它。
    • @Malvolio:他指的是实际的多维数组。 JavaScript 所拥有的不是那样的。它只是嵌套成员,也恰好是长度彼此相等的数组。矩形结构没有自动化或强制执行。
    • 你杀了我父亲。准备死。
    • @Malvolio:是的,很抱歉。原来这只是一个很大的误会。我以为他吃了我的午餐,但后来我想起那天我没有带午餐。尴尬...
    【解决方案2】:

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

    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++;
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-14
      • 2014-10-12
      • 2020-05-29
      • 2022-10-02
      • 2018-06-28
      • 1970-01-01
      相关资源
      最近更新 更多