[英]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.