簡體   English   中英

無法使用javascript將值從函數傳遞到數據層數組

[英]Unable to pass a value from a function to a data layer array using javascript

我正在嘗試在下面的HTML中收集值(顯示74中的1 -10)

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

通過使用window.onload函數

/ ** *在頁面加載后返回“顯示19300的1 -10”的文本,並將該值傳遞給dataLayer。 * /

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

window.onload = showing;

並傳遞到dataLayer對象(搜索結果)中,以便Google Analytics(分析)可以從dataLayer中獲取值。

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

  <!-- end dataLayer -->

但是我似乎無法將querySelector的值傳遞給dataLayer,因為我一直在獲取“未定義”。 是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函數的值傳遞給全局變量,以便可以將其傳遞給dataLayer?

設置showResult之外的datalayer ,使程序難以閱讀和調試。 我的建議是為像下面這樣的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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM