Javascript获取元素的值和位置,并将结果保存在对象数组中

javascript get element value and its position, and save results in object array

本文关键字:保存 结果 存在 对象 数组 元素 获取 位置 Javascript      更新时间:2023-09-26

我有一个类似于下面的标记(注意:span是可选的子元素):

<li class="prices">
   11.11
   <span>1.11</span>
</li>
<li class="prices">
    22.22
</li>
<li class="prices">
   33.33
   <span>3.33</span>
</li>
<li class="prices">
   44.44
</li>
<li class="prices">
   55.55
   <span>5.55</span>
</li>

我想返回跨度内的价格列表及其在对象数组中的位置,所以我得到类似的东西:{pos: 0,价格,1.11},{pos: 2,价格,3.33},{pos: 4,价格,5.55}JS代码是怎么做的?:)

假设您有一个容器元素,其中包含所有的li。价格元素:

var container = document.getElementById("container");
var arr = [];
for (var pos = 0; pos < container.children.length; pos++) {
    var li = container.children[pos];
    var spans = li.getElementsByTagName("span");
    var price = spans.length > 0 ? spans[0].innerHTML : "";
    arr.push({pos: pos, price: price});
}

将价格存储为字符串,如果li元素中没有span元素,则使用空字符串。

至少需要XPath 2.0才能做到这一点。

要获得您所建议的字符串表示,例如使用

string-join(
  for $li at $position in //li
  return concat("{ pos: ", $position, ", price: ", $li/span/data(), " }")[$li/span]
, ', ')

如果你喜欢数组,你可以返回一个序列中的所有内容,并在JavaScript中从中读取奇数/偶数对:

for $li at $position in //li
return ($position, $li/span/data())[$li/span]