循环数组javascript显示结果数据属性

时间:2018-03-21 13:42:53

标签: javascript jquery arrays loops

我的脚本中有问题。 我在PHP中有一个循环,在html中显示这个,这项工作很好:

<?php foreach ($locations as $key => $value) : ?>

     <div class="storelocator-info" data-id="<?= $value['codepostal']; ?>" 
           style="display: block;"> 
         <p class="title-depot"><?= $value['name']; ?></p>
   </div>
<?php endforeach ; ?>

现在我有一个搜索栏,我输入一个像11或11111这样的邮政编码,在我的控制器中发送ajax,我会以json格式返回结果:

try {
    jQuery.ajax({
        url: url,
        dataType: 'json',
        type: "POST",
        data: form.serialize(),
        success: function(data) {
            if (data['success'] === false){         

                var index;
                var a = data.zip;
                for (index = 0; index < a.length; ++index) {

                    jQuery('.storelocator-info').hide();
                    jQuery('.storelocator-info[data-id='+a[index]+']').show();
                }

                jQuery('.storelocator-error').hide();
            } else{
                jQuery('.moulinroty-loader').hide();
                jQuery('.storelocator-info').hide();
                jQuery('.storelocator-error').fadeToggle();
            }   
        }
    });
} catch (e) {
    console.log('error' + e);
}

data.zip是一个像这样的数组[&#39; 85000,85001&#39;]; 我只想展示&#34;&#34;其中data.zip ==带有javascript或jquery的data-id属性。

结果只显示数组中最后一个data-id = 85001的结果, 所以我想显示85000和85001

你能解释一下我的错误或错误在哪里吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您正在隐藏循环的每次迭代中的所有元素。之前隐藏它们然后显示需要显示的那些:

&#13;
&#13;
bundle info [gemname]
&#13;
&#13;
&#13;