3 回答

TA貢獻1836條經驗 獲得超3個贊
這是一個范圍問題 - 在函數內部聲明的函數在外部函數之外無法訪問,就像在函數內部聲明的變量一樣:
(function(){
var a = 'hello';
function b () {
console.log(a);
}
})();
a; // syntax error - a is undefined
b(); // syntax error - b is undefined
您可以通過將函數分配給全局變量來使其工作:
var f;
$(document).ready(function(){
f = function(){
alert("alert");
}
})

TA貢獻1848條經驗 獲得超2個贊
每當你聲明一個函數時,你就會創建一個作用域。在該范圍內聲明的任何內容都無法在該范圍之外訪問。
$(document).ready(function(){
// f is only accessible to other code declared in this function.
function f(){
alert("alert");
}
})
使用 jQuery 執行此操作的推薦方法是在 jQuery 就緒函數中分配單擊處理函數。
HTML:
<button id="my-button-id">My Button</button>
JavaScript:
$(document).ready(function(){
// f is only accessible to other code declared in this function.
function f(){
alert("alert");
}
// Assign onclick here
$('#my-button-id').on('click', f)
})

TA貢獻1829條經驗 獲得超9個贊
$(document).ready() 在所有 html 加載完成后被調用。由于您在 html 中調用“f()”函數,因此它會在“$(document).ready()”中的任何內容運行之前調用“f()”,這意味著“f()”沒有定義。
現在通常甚至不使用“$(document).ready()”,只要您在所有 html 末尾加載該 jQuery 即可避免長時間加載。這將允許您從 html 中調用“f()”,并且在 html 之后仍然加載 jQuery 的其余部分。
- 3 回答
- 0 關注
- 190 瀏覽
添加回答
舉報