面包屑的自定义GTM变量

时间:2016-11-02 18:00:47

标签: javascript json

我正在尝试创建一个自定义GTM JavaScript变量,该变量将返回JSON-LD中特定面包屑链接的值。

然而,我写的循环只返回第一个值:

JavaScript(GTM变量)

function() { 
    var bcLink = document.getElementsByClassName("bcLink");
    for (i=0; i<bcLink.length; i++) { 
        return bcLink[i].getAttribute("href");
    }
}

HTML

<ul class="breadcrumbs">
    <li><a class="bcLink" href="http://www.site1.com">Home</a></li>
    <li><a class="bcLink" href="http://www.site2.com">Dumpsters</a></li>
    <li><a class="bcLink" href="http://www.site3.com">State</a></li>
    <li><a class="bcLink active" href="http://www.site4.com">City</a></li>
</ul>

输出JSON-LD

{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"http://www.site1.com","name":"Dumpsters"}},{"@type":"ListItem","position":2,"item":{"@id":"http://www.site1.com","name":"Dumpsters"}},{"@type":"ListItem","position":3,"item":{"@id":"http://www.site1.com","name":"Dumpsters"}},{"@type":"ListItem","position":4,"item":{"@id":"http://www.site1.com","name":"Dumpsters"}}]}}

你只能看到&#34; http://www.site1.com&#34;正在打印为&#34; @ id&#34;

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您设置的自定义JavaScript变量只会返回第一个值。

这是由于return语句,一旦脚本对此进行评估,它将返回当前值,即索引0并关闭循环。因此它只会返回第一个索引。

由于您无法将值传递到Custom JavasScript Variables中,因此您需要返回要使用的格式化对象。

function() { 
var bcLink = document.getElementsByClassName("bcLink");
var data = [];
for (i=0; i<bcLink.length; i++) { 
// you will need to create/format the data suitable to your needs
data.push({ 'url' : bcLink[i].getAttribute("href") });
}
//return the data object to use elsewhere
return data;
}