El HTML de mi sitio web tiene lo siguiente:
Para tomar el texto H3 (ALGUNA TEXTO) como una variable en Tag Manager, cuando un usuario hace clic en la clase div "c-card c-card--primary c-parkcard", creo que necesito usar una variable DOM Element
Pero no está devolviendo el texto. Si el selector de elementos debe ser:
.c-card.c-card--primary.c-card__body.u-h6.c-card__titleSin embargo, devuelve un valor nulo en Tag Manager.
La solución fue crear una variable JS personalizada que cuando se hacía clic en la imagen encontraría el div "c-card c-card--primary c-parkcard" (9 padres hacia arriba) y luego volvería a bajar para encontrar el elemento h3 por clase y luego devolver el texto:
function(){ var z = {{Click Element}}.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode .getElementsByClassName('u-h6 c-card__title')[0].innerText; return z; }el uso de
getElementsByClasses tan simple como:
$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');Ha establecido "h3" como "nombre de atributo". "h3" no es un atributo (sino el nombre de la etiqueta). No desea establecer un nombre de atributo en absoluto, porque no desea devolver el valor de un atributo, pero el texto interno de la etiqueta, y ese es el comportamiento predeterminado de todos modos.
Si usa una variable DOM, esto devolverá la primera instancia en la página. Si su selector coincide con varios nodos DOM, aún obtendrá el primero, independientemente de si el usuario hace clic. Si espera que esto se actualice según el elemento en el que se hizo clic, debería usar la variable {{Click Text}} (una variable integrada que es posible que deba habilitar primero).
Lo más probable es que el elemento de clic real no sea el h3, sino el enlace anidado dentro, pero eso realmente no cambia las cosas para usted (ya que en ambos casos el texto interno serán los nodos de texto contenidos, que en este caso es lo mismo).