【问题标题】:Javascript .split () function with multiple conditions [duplicate]具有多个条件的Javascript .split()函数[重复]
【发布时间】:2016-09-05 23:23:46
【问题描述】:

嘿,我在使用 GTM 中的 split 函数时遇到了一些麻烦,我想阅读 body 类并返回一个单数词。即

<body class="landing-holidays subscribe-page"></body>

仅返回“假期”,我的挑战是让拆分仅拉出第二个值。代码:

function () {
    var product = document.getElementsByTagName('body')[0];
    if (product != undefined) {
        var product_id = product.getAttribute('class');
        if (product_id != null)
            return product_id.split('-')[1];
    }
    return null
}

我得到“假期订阅”。当我需要“假期”时,有什么见解吗?

【问题讨论】:

  • 我不明白这是一个“完全重复”。
  • document.body.className.match(/landing-(.+?)\b/);
  • 有一个classList 接口将返回元素上的类列表。这可能对您有所帮助,也可能无济于事。
  • @8protons OP 出现(但这种外观可能具有欺骗性,如果 OP 稍后澄清问题)想要在连字符和空格上拆分字符串并获得来自这样一个拆分列表的第二个元素。 OP 已经知道如何从列表中获取第二个元素,所以剩下的唯一问题是如何拆分多个字符,这正是重复目标地址。
  • @apsillers 哇。这完全有道理,谢谢你的解释。我没有足够的经验来了解问题和细节的语言(在这种情况下为 JS)语法/语义,所以在我读到你的观点之前,这对我来说毫无意义。让我有点希望留下对标志的反馈是必需的,这样用户就可以学习和理解是什么决定了一个值得结束的问题。

标签: javascript google-tag-manager


【解决方案1】:

您可以使用正则表达式。将.split('-') 更改为.split(/[\-\s]/)

var product = document.getElementsByTagName('div')[0];

function run() {
  if (product != undefined) {
    var product_id = product.getAttribute('class');
    if (product_id != null) {
      var a = product_id.split(/[\-\s]/);
      for (var i = 0, l = a.length; i < l; i++) {
        if (a[i] === 'holidays') {
          return a[i];
        }
      }
    }

  }
}
alert(run())
&lt;div class="landing-holidays subscribe-page"&gt;&lt;/div&gt;

【讨论】:

  • aaa,我试图使用不带括号的 reg ex。 SMH 谢谢提醒多喝咖啡!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-13
  • 1970-01-01
相关资源
最近更新 更多