Сьогодні я щойно написав пост про "Чому ми використовуємо букви типу" e "в e.preventDefault ()?" і я думаю, що моя відповідь матиме певний сенс ...
Спочатку давайте побачимо синтаксис addEventListener
Зазвичай це буде:
target.addEventListener (тип, слухач [, useCapture]);
А визначенням параметрів addEventlistener є:
type: Рядок, що представляє тип події, який потрібно слухати.
слухач : Об'єкт, який отримує сповіщення (об’єкт, що реалізує інтерфейс події), коли відбувається подія вказаного типу. Це повинен бути об'єкт, що реалізує інтерфейс EventListener, або функцію JavaScript.
(Від MDN)
Але я думаю, що є одне, що слід зауважити:
Коли ви використовуєте функцію Javascript в якості слухача, об’єкт, який реалізує інтерфейс Event (об'єкт подія), буде автоматично призначений "першому параметру" функції. Отже, якщо ви використовуєте функція (e), об'єкт буде присвоєний "e", оскільки "e" є єдиним параметром функції (безумовно, першим!), тоді ви можете використовувати e.preventDefault, щоб щось запобігти ....
спробуємо на прикладі, як показано нижче:
<p>Please click on the checkbox control.</p>
<form>
<label for="id-checkbox">Checkbox</label>
<input type="checkbox" id="id-checkbox"/>
</div>
</form>
<script>
document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
//var e=3;
var v=5;
var t=e+v;
console.log(t);
e.preventDefault();
}, false);
</script>
результатом буде: [object MouseEvent] 5, і ви запобіжете події клацання.
але якщо ви видалите знак коментаря, наприклад:
<script>
document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
var e=3;
var v=5;
var t=e+v;
console.log(t);
e.preventDefault();
}, false);
</script>
ви отримаєте: 8 і помилку : "Uncaught TypeError: e.preventDefault не є функцією в HTMLInputElement. (VM409: 69)".
Звичайно, цього разу подія натискання не буде запобігатись, оскільки "e" було знову визначено у функції.
Однак якщо ви зміните код на:
<script>
document.querySelector("#id-checkbox").addEventListener("click", function(e,v){
var e=3;
var v=5;
var t=e+v;
console.log(t);
event.preventDefault();
}, false);
</script>
кожна річ справно працюватиме знову ... ви отримаєте 8, і подія клацання буде запобіжена ...
Отже, "e" - це лише параметр вашої функції, і вам потрібно "e" у вашій функції (), щоб отримати "об'єкт події", а потім виконайте e.preventDefault (). Це також причина, чому ви можете змінити "e" на будь-які слова, які не зарезервовані js.