2016-11-15 4 views
0

Ich möchte Daten aus meinem HTML-Code in meine DataLayer (Google Tag Manager) ziehen.Javascript DataLayer Fetch von

Der HTML-Code ist so etwas wie dieses:

<body class="portal sessions" data-place="hun">...</body> 

Und der Javascript-Code ist so etwas wie dieses:

<script type="text/javascript"> 
    var lang_log = document.getElementsByClassName("portal"); 
    dataLayer.push({ 
    "language_login":lang_log 
}) 
</script> 

Was ich würde versuchen, ist auf die lang_log Variable zu geben, die „hun "Wert und ich würde versuchen:

<script type="text/javascript"> 
    var lang_log = document.getElementsByClassName("portal")['data-place']; 
    dataLayer.push({ 
    "language_login":lang_log 
}) 
</script> 

Aber es funktioniert nicht. Irgendwelche Ideen?


Jede Hilfe oder Beratung ist apprecaited, Vielen Dank im Voraus.

+0

Sie könnten die native Lösung mit einem DOM-Typ Variable versuchen, ein Selektor, der für body.portal und „Daten-place“ als Attributnamen aussieht - kann dies den Wert des Attributs zurückgeben soll ohne benutzerdefinierte JS. –

+0

danke, ich werde dieses versuchen! –

Antwort

1

document.getElementsByClassName("portal") gibt eine Array-artige Sammlung von Elementen zurück.

Sie können das erste Element dieser Sammlung mit document.getElementsByClassName("portal")[0] erhalten.

Verwenden Sie access the data attributedocument.getElementsByClassName("portal")[0].dataset.place.

var AdataLayer = []; 
 
var lang_log = document.getElementsByClassName("portal")[0].dataset.place; 
 
AdataLayer.push({ 
 
    "language_login":lang_log 
 
}) 
 
console.log(AdataLayer); 
 
console.log(AdataLayer[0].language_login);
<body class="portal sessions" id="portal" data-place="hun">...</body>

+0

vielen dank! Das ist die Antwort auf das Problem - ich habe verpasst, dass der Datenplatz tatsächlich ein Datenattribut ist! –

0

die Lösung gefunden:

<script type="text/javascript"> 
    var lang_log = document.getElementsByTagName("body")[0].getAttribute("data-locale"); 
    dataLayer.push({ 
    "language_login":lang_log 
}) 
</script> 

Noch in warum nicht funktioniert hat die erste Version der Untersuchung:

die JS sein sollte!