【问题标题】:Node Array - How to replacestring from values in array in javascript节点数组 - 如何在 javascript 中从数组中的值替换字符串
【发布时间】:2017-02-08 20:24:06
【问题描述】:

我在 GTM 中使用自定义 JS 创建了一个数组,我想为其删除字符串,然后将值添加到数组中以给我一个最终值。

我的数组有以下值

Array = [ [AED1,299.00], [AED2,699.00] ]

从此,我想删除“AED”和逗号,以便留下

New_Array = [ [1299.00,], [2699.00] ]

最后,然后添加值,这样我就剩下 3998。 我想在 GTM 中捕获这个值。 但是,我的 JS 返回未定义。

我的自定义 JS

 function myfunction() {
   var no_products = document.querySelectorAll('span.price');

   var nodearray = [].slice.call(no_products);

   for (var i = 0; i < nodearray.length; i++) {
     nodearray[i] = nodearray[i].replace(/,/g, '');
   }

   for (var i = 0; i < nodearray.length; i++) {
     nodearray[i] = nodearray[i].replace('AED', '');
   }

    var sum = 0;
     for (var i = nodearray.length; !!i--;) {
       sum += nodearray[i]; 
     }
   return sum
 }

使用提供的解决方案,它仍然返回“null”值。 问题似乎是由于我在开始时定义的变量“no_products”和“nodearray”造成的。

我正在尝试在我们的一个页面上捕获所有产品价格,即页面上有 2 个价格,分别是 AED1,299.00 和 AED2,699.00。

价格都有 span class="price" AED1,299.00 或 AED2,699.00。 因此,在 GTM 中,我使用 document.querySelectorAll('span.price') 以便我可以同时捕获这两个价格。 那就是“no_products”。

在捕获两个价格后,我想将它们放入一个数组中,这就是“nodearray”的第一个定义正在做的事情。 只是在 GTM 预览中查看这个,我看到它返回的值是

[[对象 HTMLSpanElement], [对象 HTMLSpanElement]]

我的定义正确吗?

【问题讨论】:

  • 您的第一个 Array 不正确。他们是在嵌套数组中的string 吗?
  • 请将AED1AED2的值相加。

标签: javascript arrays node.js


【解决方案1】:

问题出在 myfunction() 中。您有一个嵌套数组,因此当您编写 nodearray[0] 时,它不会返回 "AED1,299.00",而是返回 ["AED1,299.00"]。要检索"AED1,299.00",您必须编写nodearray[0][0]

看到这个小提琴:https://jsfiddle.net/ugjke98k/

PS:我假设您的数组是[ ["AED1,299.00"], ["AED2,699.00"] ]。如果是这样,下次发帖时不要忘记",因为它很重要

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 2010-10-31
    • 2014-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    相关资源
    最近更新 更多