Tomi Mester
Tomi Mester

Reputation: 109

Javascript DataLayer Fetch from

I'd like to pull data from my HTML code into my dataLayer (Google Tag Manager).

The html code is something like this:

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

And the Javascript Code is something like this:

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

What I'd try is to give to the lang_log variable the "hun" value and I'd try:

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

But it's not working. Any ideas?


Any help or advice is apprecaited, Thank you in advance.

Upvotes: 0

Views: 321

Answers (2)

SLePort
SLePort

Reputation: 15461

document.getElementsByClassName("portal") returns an array-like collection of elements.

You can get the first element of this collection with document.getElementsByClassName("portal")[0].

To access the data attribute, use document.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>

Upvotes: 1

Tomi Mester
Tomi Mester

Reputation: 109

Found the solution:

the JS should be:

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

Still investigating in why the first version did not work!

Upvotes: 0

Related Questions