2016-09-13 44 views
0

我想在下面的HTML無法從函數到數據層陣列使用javascript

<body> 
<p data-brackets-id="1217" class="search"> 

       <!--No Results Found--> 
       <small data-brackets-id="1218" data-bind="visible:(searchResults().length == 0), html: translations.noResults" style="display: none;">No Results To Display Please Enter A Search Term Above</small> 

       <!--Error Message--> 
       <small data-brackets-id="1219" class="error-message" data-bind="visible:errorMessage, html:errorMessage" style="display: none;"></small> 

       <!--Search Result Count--> 
       <small data-brackets-id="1220" data-bind="html:currentlyShowing, visible:(searchResults().length > 0)">Showing 1 -10 of 19300</small> 
      </p> 
</body> 

收集的值(顯示74 1 -10)通過使用傳遞一個值window.onload函數

/** *返回頁面加載後顯示「19300的1 -10」的文本並將值傳遞給dataLayer。 */

function showing() { 
    var showResults = document.querySelector(".search small :nth-child(3)").innerHTML; 
} 

window.onload = showing; 

並通入一個數據層對象(搜索結果),以便谷歌分析可以抓住從數據層的值。

<!-- start dataLayer --> 
<script> 
    var adobeInfo = { 
      pageInfo: { 
       'pageType': "welcome page", 
       'Search Results': showResults 
      } 
    } 

    <!-- end dataLayer --> 

但我似乎不能,因爲我不斷收到「不確定」到querySelector的值傳遞給數據層。是不是讓我傳遞值的windows.onload,或者我只是使用錯誤的代碼語法來完成我需要的任務?

謝謝你提前任何幫助。

<body> 
 
<p data-brackets-id="1217" class="leader-1 no-trailer"> 
 
<!--No Results Found--> 
 
<small data-brackets-id="1218" data-bind="visible:(searchResults().length == 0), html: translations.noResults" style="display: none;">No Results To Display Please Enter A Search Term Above</small> 
 

 
<!--Error Message--> 
 
<small data-brackets-id="1219" class="error-message" data-bind="visible:errorMessage, html:errorMessage" style="display: none;"></small> 
 

 
<!--Search Result Count--> 
 
<small data-brackets-id="1220" data-bind="html:currentlyShowing, visible:(searchResults().length > 0)">Showing 1 -10 of 74</small> 
 
</p> 
 

 
<script> 
 
function results() { 
 
    alert(" alert inside results function"); 
 
    var showResults = document.querySelector("leader-1.no-trailer :nth-child(3)").innerHTML; // get the results of the showing info from search page. 
 
    showResults.select(); 
 
} 
 

 
window.onload = results(); 
 
</script> 
 

 
    
 
<!-- Use dataLayer object to pass values to analytics --> 
 

 
<script> 
 
    var dataLayer = { 
 
      pageInfo: { 
 
       'pageType': "welcome page", 
 
       'show Results': showResults // value of show results should go here (Showing 1 -10 of 74) 
 
      } 
 
     } 
 
</script> 
 

 
</body>

,所以我想我真正的問題是如何執行我的window.onload函數的值傳遞給一個全局變量,這樣我可以把它傳遞給我的數據層?

+0

其中'showResults'定義 –

+0

一切拋開,你實際上並沒有引用任何地方的dataLayer ...你是如何試圖與它交互? – aw04

+0

請顯示更多的代碼。僅僅從這段代碼片段中確定問題是不可能的。 –

回答

0

設置showResultdatalayer以外使得程序難以讀取和調試。我的建議是定義一個加載器data layer像波紋管:

var dataLayer = { 
    pageInfo: { 
    'pageType': "welcome page", 
    }, 
    load: function() { 
    this.showResults = document.querySelector("leader-1.no-trailer :nth-child(3)").innerHTML; // get the results of the showing info from search page. 
    this.showResults.select(); 
    } 
} 


// windows onload event 
windows.onload = function() { 
    dataLayer.load(); 
}