2016-11-02 3 views
1

Я пытаюсь создать настраиваемую переменную JavaScript GTM, которая вернет значение конкретной ссылки в JSON-LD.Пользовательская переменная GTM для Breadcrumbs

Однако мой цикл я писал возвращает только первое значение:

JavaScript (GTM Variable)

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> 

Outputed 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"}}]}} 

Вы можете видеть, что только "http://www.site1.com" печатается как "@Id"

Любые идеи?

ответ

0

Пользовательская переменная JavaScript, которую вы создали, вернет только первое значение.

Это связано с оператором return, как только скрипт оценит это, он вернет текущее значение, то есть индекс 0 и закроет цикл. Поэтому он только вернет первый индекс.

Поскольку вы не можете передавать значения в пользовательские переменные JavasScript, вам нужно будет вернуть отформатированный объект для использования.

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; 
} 
Смежные вопросы