javascript - 是否可以来回(无休止地)改变innerHTML/textContent?
问题描述
所以我正在考虑改变innerHTML<p>Click</p>
内容从“Click”的内容更改为“Clicked”,当再次单击时,它再次变回“Click”(并且可以再次单击以导致“Clicked”无限次)。
有人可以提供线索吗?*我很感激,
到目前为止,这是我的失败尝试-->
<!DOCTYPE html>
<body>
<p id="event_01">Click</p>
<script>
let goo = document.querySelector("#event_01");
let clickOnce = function() {goo.innerHTML = "Clicked"};
let clickBack = function(){
goo.innerHTML = "Click"};
if(goo.textContent == "Click") {
goo.addEventListener("click", clickOnce);
} else if (goo.textContent == "Clicked") {
goo.addEventListener("click", clickBack);
}
</script>
</body>
解决方案
您应该将您的条件放在点击处理程序中而不是外部。脚本标签之间的内容只会执行一次。当代码运行(页面加载)时,goo 的内容是 Click,因此只有将内容设置为“clicked”的侦听器才会附加到元素。相反,您应该这样做:
let goo = document.querySelector("#event_01");
let onClick = function() {
if(goo.textContent == "Click"){
goo.innerHTML = "Clicked";
} else {
goo.innerHTML = "Click";
}
};
goo.addEventListener("click", clickOnce);
推荐阅读
- python - 匹配 DataFrame 中的相似值
- java - 删除不推荐使用的代码是坏主意还是好主意?
- c# - C#中的数值数据类型比较
- css - 将鼠标悬停在整个正面卡片上,而不仅仅是按钮上
- ftp - 如何使用 rclone 制作 ftp 远程
- grails - 如何使用spring-security通过用户名和密码登录?
- node.js - Angular 8 更新期间的 npm 注册表问题
- ruby-on-rails - 如何将 Rails 项目从数字海洋水滴转移到域
- windows - 我的 Anaconda Prompt 标题栏中的数字是多少?
- mongodb - MongoDB 在集合之间搜索一个键