簡體   English   中英

addEventListener的Onclick事件不起作用

[英]Onclick event to addEventListener not working

檢查此代碼:

<script>
var next = document.getElementById("next");
var prev = document.getElementById("prev");

next.addEventListener("click",next(),false);
prev.addEventListener("click",prev(),false);

function next(e) {
e.preventDefault();
prev.style.display = "block";
next.style.display = "none";
}
function prev(e) {
e.preventDefault();
prev.style.display = "none";
next.style.display = "block";
}
</script>

<div id="nav">
<a href="javascript:void;" id="prev">&lsaquo;&lsaquo;&lsaquo;</a>
<a href="javascript:void;" id="next">&rsaquo;&rsaquo;&rsaquo;</a>
</div>

我不知道為什么這不起作用。 我正在<body>標記之前加載腳本。 請幫忙。

它給了我錯誤:未捕獲的TypeError:對象[object Object]的屬性'next'不是函數

當您在函數中添加括號時,函數將立即被調用,結果(在這種情況下為未定義)將返回到addEventListener。

您想引用函數,而不是調用它們

next.addEventListener("click", next, false);
prev.addEventListener("click", prev, false);

下一個錯誤是您為變量和函數使用了相同的名稱,因此當您說next.style它現在是函數,而不是元素,因為函數名會覆蓋變量

var next_elem = document.getElementById("next");
var prev_elem = document.getElementById("prev");

next_elem.addEventListener("click", next_fn, false);
prev_elem.addEventListener("click", prev_fn, false);

function next_fn(e) {
    e.preventDefault();
    prev_elem.style.display = "block";
    next_elem.style.display = "none";
}

function prev_fn(e) {
    e.preventDefault();
    prev_elem.style.display = "none";
    next_elem.style.display = "block";
}

您需要提及函數名稱。 通過指定()和函數名稱,它們將被調用。

更改為:

next.addEventListener("click",next,false);
prev.addEventListener("click",prev,false);

暫無
暫無

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

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