javascript - 为什么我的段落 textContent 在瞬间闪烁其值后消失了?
问题描述
我是 JavaScript 和 HTML 的新手,正在尝试自己从头开始学习。
在我下面的代码中,“嗨!”这个词 在“点击我!”下方闪烁一瞬间。按钮,然后完全消失。为什么这种情况不断发生?
注意:我阅读了其他一些关于提交与按钮类型和表单刷新的帖子。我什至没有在这里使用表单标签,而且我在我的 HTML 文件中也明确提到了type = "button" 。
document.querySelector("#text").textContent = document.querySelector("#B1").addEventListener("click", showDate);
function showDate(event) {
let week = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
let months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
let date = new Date();
let day = week[date.getDay()];
let month = months[date.getMonth()];
let year = date.getFullYear();
let dayOfMonth = date.getDate();
return(`Today is ${day}, ${dayOfMonth} ${month}, ${year}.`);
}
<html>
<body>
<button id="B1" type="button" >Click Me!</button>
<p id="text">Hi!</p>
<script src="Scripts/test2.js"></script>
</body>
</html>
感谢任何解决方案!
解决方案
您无法获得将在 addEventListener 中调用的方法的结果,因为它是一个回调函数并且回调函数不返回任何内容。
与基于回调的 API 的主要区别在于它不返回值,它只是使用结果执行回调。[..]
要解决此问题,您可以删除=之前的部分
document.querySelector("#B1").addEventListener("click", showDate);
并在您的showDate()函数中执行 textContent 分配并删除返回。
document.querySelector("#B1").addEventListener("click", showDate);
function showDate(event) {
let week = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
let months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
let date = new Date();
let day = week[date.getDay()];
let month = months[date.getMonth()];
let year = date.getFullYear();
let dayOfMonth = date.getDate();
document.querySelector('#text').textContent = `Today is ${day}, ${dayOfMonth} ${month}, ${year}.`;
}
<html>
<body>
<button id="B1" type="button" >Click Me!</button>
<p id="text">Hi!</p>
<script src="Scripts/test2.js"></script>
</body>
</html>
在这里你可以阅读更多
- https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener
- 如何从 addEventListener 返回值
- JS:EventListener 函数的返回值
- https://medium.com/codebuddies/getting-to-know-asynchronous-javascript-callbacks-promises-and-async-await-17e0673281ee#:~:text=The%20main%20difference%20with%20callback,returned%20Promise %20object%20and%20calls%20。
推荐阅读
- python - 如何在 python 波特图中绘制边距?
- php - OpenTBS 删除 docx 中带有格式化文本的空格
- python - 根据不等式过滤行,不区分大小写
- php - 在韩国使用 Magnum Gothic 字体而不是 Nanum Gothic
- express - 在 express 中使用 pug(jade) 创建表并添加数据
- typescript - nodejs admin SDK中的firestore时间戳
- node.js - 谷歌云函数部署错误:提供的函数不是可加载模块
- hadoop - MapR 和 Map Reduce 有什么区别?
- sql - 缩短sql中的long case函数
- swift - 使用可编码协议解析 JSON