我的addEventListener无法正常工作

时间:2018-01-24 10:39:05

标签: javascript

事件监听器工作不到一秒钟,然后它就无法工作。

index.html文件:

inst

main.js文件:

self

日期显示不到一秒钟,然后它立即消失。

3 个答案:

答案 0 :(得分:1)

您必须取消表单提交



var myForm = document.getElementById("my-form");
var lbl = document.getElementById("lbl");
var nextBtn = document.getElementById("next");

nextBtn.addEventListener("click", displayDate);

function displayDate() {
    
    lbl.innerHTML = Date();
}

document.getElementById('my-form').onsubmit = function() {
    return false;
};

<!DOCTYPE html>
<html>
<head>
    <title>Javascript</title>
</head>
<body>

    <form id="my-form">
        <label id="lbl"></label>
        <button id="next">Next</button>
    </form>
</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您正在单击表单内的按钮元素。默认按钮类型为submit,因此:

  1. 点击按钮
  2. 点击事件已触发
  3. JS处理点击事件
  4. 表单已提交
  5. 浏览器加载新页面
  6. ...并且新页面没有您使用客户端代码进行的修改。

    你可以采取几种方法。

    最简单的是停止使用提交按钮

    type="button"添加到<button>元素。

    您还可以阻止按钮的默认行为(停止提交表单):

    function displayDate(event) {
        event.preventDefault();
        lbl.innerHTML = Date();
    }
    

答案 2 :(得分:1)

问题是,您使用表单。单击按钮后重新加载,所以一切都重置。

var myForm = document.getElementById("my-form");
var lbl = document.getElementById("lbl");
var nextBtn = document.getElementById("next");

nextBtn.addEventListener("click", displayDate);


myForm.addEventListener('submit', handleForm);

function handleForm(event) 
 {
 event.preventDefault();
 } 


function displayDate() 
{
 lbl.innerHTML = Date();
}

这可以防止提交重新加载页面。