【问题标题】:How to grab the h3 text within a div如何在 div 中抓取 h3 文本
【发布时间】:2021-11-28 05:28:51
【问题描述】:

我的网站 HTML 有以下内容:

要在跟踪代码管理器中将 H3 文本 (SOME TEXT) 作为变量抓取 - 当用户单击 div 类“c-card c-card--primary c-parkcard”时,我认为我需要使用 DOM 元素变量

但它没有返回文本。 元素选择器应该是:

.c-card.c-card--primary.c-card__body.u-h6.c-card__title

但是,它在跟踪代码管理器中返回空值

【问题讨论】:

  • 这两个点无效。只使用一个。除非您的页面中只有一个 h3,否则使用标题类名会是一个更好的主意。

标签: javascript google-tag-manager


【解决方案1】:

解决方案是创建一个自定义 JS 变量,当单击图像时会找到“c-card c-card--primary c-parkcard” div(9 个父母以上),然后返回找到h3 逐个元素,然后返回文本:

function(){
var z = {{Click Element}}.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode
.getElementsByClassName('u-h6 c-card__title')[0].innerText;
return z;
}

【讨论】:

    【解决方案2】:

    getElementsByClass 的使用很简单:

    $dom = new DOMDocument('1.0', 'utf-8');
    $dom->loadHTML($html);
    $content_node=$dom->getElementByClass("c-card__body");
    
    $div_a_class_nodes=getElementsByClass($content_node, 'h3', 'u-h6 c-card__title');
    

    【讨论】:

    • 在跟踪代码管理器中,JS变量需要返回值
    【解决方案3】:

    您已将“h3”设置为“属性名称”。“h3”不是属性(而是标签的名称)。您根本不想设置属性名称,因为您不想返回属性的值,但标签的 innerText,无论如何这都是默认行为。

    如果您使用 DOM 变量,这将返回页面上的第一个实例。如果您的选择器匹配多个 DOM 节点,则无论用户单击什么,您仍然只会获得第一个。如果您希望它根据点击的元素进行更新,您应该使用 {{Click Text}} 变量(您可能必须先启用的内置变量)。

    实际的点击元素可能不是 h3,而是内部的嵌套链接,但这并不会真正改变您的情况(因为在这两种情况下,innerText 都将是包含的文本节点,在这种情况下是一样)。

    【讨论】:

    • 我的元素选择器现在是 {{Click Text}}.u-h6.c-card__title 但只抓取 H3 的第一个实例。
    • 我并不是要使用点击文本作为选择器。点击文本的值是最后点击元素的innerText,不需要任何额外的变量。
    猜你喜欢
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多