有人能解釋一下為什么當括號中沒有引數時函式不起作用嗎?我的意思是“按鈕”和“e”。在我看來,由于為每個“btns”元素撰寫了一個函式,它應該自動參考它。
const btns = document.querySelectorAll('.question-btn');
btns.forEach(function(button){
button.addEventListener('click', function(e){
const question = e.currentTarget.parentElement.parentElement;
question.classList.toggle('show-text');
})
});
uj5u.com熱心網友回復:
如果您的意思是您不明白為什么需要button和e在引數串列中并且不能只擁有:
const btns = document.querySelectorAll('.question-btn');
btns.forEach(function(/*no `button` here*/){
???.addEventListener('click', function(/*no `e` here*/){
const question = ???.currentTarget.parentElement.parentElement;
question.classList.toggle('show-text');
})
});
...然后答案是???在上面。所述buttonparameter1是怎樣的forEach回呼代碼可以參照特定的按鈕被該呼叫到處理forEach回呼(該按鈕forEach作為argument1至呼叫它時回呼傳遞); 沒有它,它就沒有任何可用的東西。類似地,e引數是事件處理程式代碼如何參考它正在處理的事件(瀏覽器中的事件系統呼叫函式的事件引數)。
下面是一個更簡單的按鈕示例:
function setUpHandler(button) {
button.addEventListener("click", function() {
console.log("Clicked!");
});
}
const btn1 = document.getElementById("btn1");
setUpHandler(btn1);
const btn2 = document.getElementById("btn2");
setUpHandler(btn2);
<input type="button" class="question-btn" id="btn1" value="Button 1">
<input type="button" class="question-btn" id="btn2" value="Button 2">
對setUpButton那里的兩次呼叫forEach就像我們這樣做時對它進行的兩次呼叫一樣(除了forEach還會傳遞進一步的引數 [索引和串列],setUpHandler這些引數只是忽略,因為它沒有宣告引數來接收它們):
document.querySelectorAll(".question-btn").forEach(setUpHandler);
的button在setUpHandler是引數,該函式接收第一引數英寸
1 對術語“引數”和“引數”的簡要說明,因為它們出現在上面:
function add(a, b) {
// ^??^??????????????? "parameters"
return a b;
}
const sum = add(1, 2)
// ^??^???????????? "arguments"
console.log(sum);
一個引數是命名的東西(如變數),一個函式用來指引數傳遞給它的時候,它被稱為。在上面,引數是a和b。引數是值1和2。(而且我們還傳遞console.log了一個引數:sum.)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/376167.html
標籤:javascript 功能
