2016-11-02 22 views
1

JSON-LDの特定のブレッドクラムリンクの値を返すカスタムGTM JavaScript変数を作成しようとしています。パンくず用カスタムGTM変数

の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> 

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; 
} 
関連する問題