在GTM中用Java脚本替换html内容

2022-04-10 00:00:00 javascript google-tag-manager

如果Google Tag Manager中的类"Availability Stati13",正在尝试将"sofort lieferbar"替换为"Lieferung auf Bestellung"。

<div class="availability stati13" style="">
sofort lieferbar

            <div class="blueinfo">
        <div style="display: none; opacity: 1;">in den nächsten Tagen Versandbereit</div>
    </div>
</div>

Java脚本本身运行良好,但在GTM中,如果使用自定义的html标记激发,则不会发生任何情况。

数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">
<script type="text/javascript">
function myFunction() {
  var str = document.querySelector(".availability.stati13").innerHTML; 
  var res = str.replace("sofort lieferbar", "Lieferung auf Bestellung");
  document.querySelector(".availability.stati13").innerHTML = res;
}
</script>

有人知道为什么GTM中的此脚本不起作用吗?

GTM运行良好,我尝试了这个:

document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');

这是可行的,但我无法创建If类要求


解决方案

您定义了一个函数myFunction(),但您在哪里执行它? 也许您应该将其编写为自动执行函数:

(function(){
    // your code here ...
})();

还要确保在准备好的DOM上执行此标记(以便您的代码能够找到您要查找的元素)

dom-ready-trigger-in-google-tag-manager-quick-guide/

document.querySelector(".availability.stati13")行将仅返回第一个元素!。如果此类有多个DOM元素,则必须使用querySelectorAll为所有这些元素处理此问题。

var elements = document.querySelectorAll(".availability.stati13");    
for (i = 0; i < elements.length; ++i) {
  var str = elements[i].innerHTML;
  elements[i].innerHTML = str.replace("sofort lieferbar", "Lieferung auf Bestellung");
}
我使用for而不是forEach以获得最大的兼容性。

相关文章