【问题标题】:Javascript multidimensional array undefined errorJavascript多维数组未定义错误
【发布时间】:2015-09-21 09:43:44
【问题描述】:

我在创建一个多维数组时遇到了一些麻烦,我在其中放置了该县的一些县和地方。

我想做什么的例子:

[
    'HEDMARK' => [
        1 => 'ELVERUM',
        2 => 'HAMAR 
    ],
    'OSLO' => [
        1 => 'OSLO'
    ]
]

我使用的代码是这样的:

    var $query_place = [];

    // Get each checked county
    $.each($('.county input:checkbox:checked'), function () {
        $query_place.push({
            county: $(this).val(),
            postal: []
        });
    });

    // Get each checked postal
    $.each($('.postal input:checkbox:checked'), function() {
        $query_place[$(this).attr('data-county')].postal.push();
    });

我进入控制台的错误是这样的:

TypeError: $query_place[$(...).attr(...)] is undefined

我在这里忘记了什么吗?还是我做错了?

【问题讨论】:

  • 您是否特别需要对象数组?在这里,单个对象似乎是一种更简单有效的解决方案。
  • 最好使用$().data( attributeName ),注意countytypo 可能^^
  • 查看您的浏览器开发工具(例如 firefox 中的 firebug),看看您的阵列中到底有什么,这可能会有所帮助。
  • 是的,我需要一个对象数组。这样每个县都有自己的邮政阵列。尝试改用$().data,但我得到了同样的错误。我试图将$.each 邮政线路的内部切换到alert($(this).val()); 但它没有提醒任何东西,所以我认为我不能使用 $(this) 出于某种原因。
  • 我知道每个县都能正常工作 (imgur.com/wlZYu5p)。我只需要知道将每个邮件推送到它所属的数组中。我该怎么做?我尝试了以下方法,但它给了我一个错误 (TypeError: $query_place.county is undefined) $query_place.county[$(this).attr('data-county')].postal.push($(this).val());

标签: javascript jquery arrays multidimensional-array


【解决方案1】:

你必须像这样实现你的代码

var $query_place = [];    
    // Get each checked county
    $.each($('input:checkbox.county:checked'), function () {
        $query_place.push({
            county: $(this).val(),
            postal: setPostal($(this).val())
        });        
    });           

    function setPostal(county)
    {
        var postal = [];
        // Get each checked postal
        $.each($('input:checkbox.postal:checked'), function () {
            if ($(this).attr('data-county') == county)
                postal.push($(this).val());
        });
        return postal;
    }

【讨论】:

    【解决方案2】:

    您必须先解析 $query_place 数组对象,然后再将任何值推入其中。

    $.each($('.county input:checkbox:checked'), function () {
    var values={};
    values.county= $(this).val();
    values.postal=[];
    var a=JSON.parse($query_place);
    a.push(value);
    
    })
    

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      相关资源
      最近更新 更多