簡體   English   中英

Javascript 函數未在點擊事件上定義,但適用於頁面加載?

[英]Javascript Function Not Defined On Click Event, But Works on Page Load?

我在本地機器上設置了一個 Wordpress 站點,我正在其中構建自定義主題。 在 'enqueue-assets.php' 文件中,我使用 wp_enqueue_script 加載主包 javascript 文件。 在該包中是其他 .js 文件的額外導入。 在導入的 .js 文件之一中,有以下函數:

function svgPageJump(target){
    alert(target);
}

我還嘗試將函數分配給變量,只是為了確保得到與下面解釋的結果相同的結果:

let svgPageJump = function(target){
    alert(target);
};

var svgPageJump = function(target){
    alert(target);
};

當我使用 .ready() 在同一個 .js 文件中調用這個函數時:

$(document).ready(function(){
    svgPageJump('section-plan');
});

正如預期的那樣,我在頁面加載時收到警報。 我也通過在函數聲明之后調用它來獲得警報(也如預期的那樣。)

不幸的是,這不適用於頁面上其他地方的點擊事件。 最終,我試圖在單擊 SVG 中的元素時觸發這些事件,以創建頁面跳轉。 在我使用的可點擊元素上:

onclick="top.svgPageJump('section-plan');"

單擊該元素給我這個錯誤:

Uncaught TypeError: top.svgPageJump is not a function
    at SVGGElement.onclick

起初我認為這是 SVG 的定位問題,但我對頁面其他地方的一些文本進行了另一次測試。 在 Wordpress 頁面的古騰堡標題塊中,我使用該塊的 HTML 編輯器放置了以下標記:

<h2 id="section-plan" onclick="svgPageJump('section-plan');">PLAN</h2>

我也在自定義 HTML 塊中執行此操作,但是無論哪種方式,當我單擊實際頁面上的 h2 時,都會出現此錯誤:

Uncaught ReferenceError: svgPageJump is not defined
    at HTMLHeadingElement.onclick

我顯然遺漏了一些東西(可能是一些簡單的東西),但不確定如何在主題文件(否則它們都可以正常工作)或通過 Wordpress 管理員在頁面中定義的事件之間跟蹤問題,或者...?

關於此的另一個注意事項...我最初使用更簡單的方法使用錨標記和關聯的 id 使這些頁面跳轉。 這工作正常,但我在頁面上有一個粘性標題,因此當頁面滾動時,帶有 id 的元素在標題下滾動,因此我嘗試使用 JavaScript/jQuery 來說明標題高度。

謝謝!

根據這個問題(如果有一個贊成的答案,我會將其作為副本關閉):

非模塊腳本頂層的var將在window對象上創建一個屬性。 使用函數聲明也是如此 您可以通過top從框架訪問它。

let不會window對象上創建屬性,因此如果您使用let ,則無法以這種方式訪問​​它。

暫無
暫無

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

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