3

我有以下来自另一个页面的序列化数据字符串(一些内容来自复选框,这就是重复“品牌”的原因):

brand=Ford&brand=Dodge&brand=Mazda&year=2013&type=compact

我想用“结果”的 id 填充 div 标签:

<div id="results">    
    <div id="brand"></div>    
    <div id="year"></div>    
    <div id="type"></div>    
</div>

我目前正在使用此代码循环数据:

$.each(SelectionData.split('&'), function (index, elem) {    
    var vals = elem.split('=');    
    $('#' + vals[0]).text(decodeURIComponent(vals[1].replace(/\+/g, ' ')));    
});

在我们向表单添加复选框之前,它一直运行良好。现在,当名称与此处显示的名称相同时,我只能显示字符串中的最后一个值:

这就是我们现在所拥有的

<div id="results">
    <div id="brand">Mazda</div>    
    <div id="year">2013</div>    
    <div id="type">compact</div>    
</div>    

这就是我们正在寻找的:

<div id="results">
    <div id="brand">Ford,Dodge,Mazda</div>    
    <div id="year">2013</div>    
    <div id="type">compact</div>    
</div>
4

1 回答 1

5

我不明白为什么你希望结果在一个名为的 div 中被格式化,results但是你的代码试图改变一个元素的文本,其 id 等于 uri 参数名称的名称。

无论如何,我想我已经弄清楚了你想要做什么。 工作演示

的HTML:

<div id="brand"></div>
<div id="year"></div>
<div id="type"></div>

编码:

var SelectionData = 'brand=Ford&brand=Dodge&brand=Mazda&year=2013&type=compact';

$.each(SelectionData.split('&'), function (index, elem) {
    var vals = elem.split('=');
    var $div = $("#"+vals[0]);
    var separator = '';
    if ($div.html().length > 0) {
        separator = ', ';
    }
    $div.html($div.html() + separator + decodeURIComponent(vals[1].replace(/\+/g, '  ')));
});
于 2013-01-15T17:06:36.257 回答