如何在拆分到el的某些子节点后分配整数值?

时间:2018-06-05 01:47:51

标签: javascript jquery

我有以下html:

<div class="alm-filter alm-filter--meta" id="alm-filter-1" data-key="meta" data-fieldtype="checkbox" data-meta-key="Cate" data-meta-compare="IN" data-meta-type="CHAR">
   <ul>
     <li class="alm-filter--checkbox"><a href="javascript:void(0);" class="alm-filter--link field-checkbox field-other" id="checkbox-other-1" data-type="checkbox" data-value="other">Other</a></li>
     <li class="alm-filter--checkbox"><a href="javascript:void(0);" class="alm-filter--link field-checkbox field-painting active" id="checkbox-painting-1" data-type="checkbox" data-value="painting">Painting</a></li>
   </ul>
</div>
<div class="alm-filter alm-filter--meta" id="alm-filter-2" data-key="meta" data-fieldtype="checkbox" data-meta-key="usp-custom-14" data-meta-compare="BETWEEN" data-meta-type="NUMERIC">
   <ul>
     <li class="alm-filter--checkbox"><a href="javascript:void(0);" class="alm-filter--link field-checkbox field-1900 active" id="checkbox-1900-2" data-type="checkbox" data-value="1900">1900</a></li>
     <li class="alm-filter--checkbox"><a href="javascript:void(0);" class="alm-filter--link field-checkbox field-1920" id="checkbox-1920-2" data-type="checkbox" data-value="1920">1920</a></li>
    </ul>
</div>

我需要更改值,例如。 field-1900 id="checkbox-1900-2" data-value="1900"包含我从另一页的form收到的值。在结果页面上我做了:

<?php $myId = $_POST['myDates']; ?>

然后 js

var str = "<?php echo $myId; ?>";
var temp = new Array();
// this will return an array with strings "1", "2", etc.
temp = str.split(",");
for (a in temp ) {
  temp[a] = parseInt(temp[a], 10); // Explicitly include base
  $("#alm-filter-2").find("a").attr("value", temp[a]);
}

上面的JS是一个尝试过的逻辑,基本上我知道我有2个元素包含我想要改变的不同值,我知道我会得到var有2个数字:var str = "1952,1991";

如何更改这两个a的值以反映我从表单中获取的值?

更新

这越来越近了:

var str = "<?php echo $myId; ?>";
var temp = new Array();
// this will return an array with strings "1", "2", etc.
temp = str.split(",");
temp = temp.map(Number);
$("#alm-filter-2").find("ul>:first-child a").attr("value", temp[0]);

但我需要更改所有三种情况的values以及反映我从表单中获得的两个值的所有els a

2 个答案:

答案 0 :(得分:1)

可能首先将数据分解为数组

var values = "<?php echo json_encode(explode(',',$myId)); ?>";

然后使用each循环遍历元素并使用它们的索引从数组中的相同索引获取每个值

$("#alm-filter-2 a[data-value]").each(function(i){
   $(this).attr('data-value', values[i]))
})

答案 1 :(得分:0)

这就是我通过@charlietfl

解决的问题

在后端我将1900设置为默认值,我将更改然后执行:

var str = "<?php echo $myId; ?>";
var values = new Array();
values = str.split(",");
values = values.map(Number);
$("#alm-filter-2 a[data-value]").each(function(i){
  $(this).attr('data-value', values[i]);
  $(this).attr('id', function(_, currentID) {
     return currentID.replace('1900', values[i]);
  });
  $(this).attr('class', function(_, currentClass) {
     return currentClass.replace('1900', values[i]);
  });
  $(this).html(values[i]);
});