javascript - Javascript没有取消单击带有链接的按钮
问题描述
对 javascript 很陌生,但我不知道为什么下面的内容不起作用。我正在尝试使用 javascript 在单击按钮后使链接变为活动状态。
用户单击更新 HTML、更改类并添加 html 链接的按钮。代码第一次运行——HTML 被正确更新。但是,如果用户决定取消单击该按钮,则不会发生任何事情。
Javascript:
function agree() {
let agreement = document.getElementById("agreement");
let agree = document.getElementById("agree");
agree.onclick = () => {
if (agree.value === true) {
agreement.innerHTML = `
<button id="agree" class="agree--no" value="false"></button>I agree
<div class="btn--no-schedule">
<a href="#" > No SCHEDULE </a>
</div> `
} else {
agreement.innerHTML = `
<button id="agree" class="agree--checked" value="true"><i class="fas fa-lg fa-check-square"></i></button>I agree
<div class="btn--agree-schedule">
<a href="http://google.com" > yes SCHEDULE </a>
</div> `
}
}
};
HTML
<div id="agreement">
<button id="agree" class="agree--no" value="false"></button>I agree
<div class="btn--no-schedule">
<a href="#" > SCHEDULE </a>
</div>
</div>
我也试过
<button onclick=“agree();” id="agree" class="agree--no" value="false"></button>
但是得到一个类型错误同意()不是一个函数。
任何帮助,将不胜感激
解决方案
这里有两个错误。
首先,当您重置协议的innerHTML时,单击事件会丢失,其次,agree.value
是一个字符串,因此永远不会是“=== true”。
有多种修复方法。一种方法是更改 innerHTML 部分,这样事件就不会丢失。此外,将条件更改为=== 'true'
像这样:
HTML:
<div id="agreement">
<button id="agree" class="agree--no" value="false"></button>I agree
<div id="schedule-btn" class="btn--no-schedule">
<a href="#" > SCHEDULE </a>
</div>
</div>
JS:
function agree() {
const agreeBtn = document.getElementById("agree");
const scheduleBtn = document.getElementById("schedule-btn");
agreeBtn.onclick = () => {
if (agreeBtn.value === "true") {
agreeBtn.value = false;
scheduleBtn.innerHTML = `
<div class="btn--no-schedule">
<a href="#" > No SCHEDULE </a>
</div>
`;
} else {
agreeBtn.value = true;
scheduleBtn.innerHTML = `
<div class="btn--agree-schedule">
<a href="http://google.com" > yes SCHEDULE </a>
</div>
`;
}
};
}
编辑:我试图尽可能少地改变你的代码
推荐阅读
- javascript - 递归和异步检查html元素是否存在
- python - 从 Python 中 csv 格式的应用程序输出(exe 文件)中的变量中获取特定值
- java - Tomcat 启动在“opencms”版本 10.5.4 Web 应用程序中失败
- javascript - 如何将这 2 个对象合并为 1 个?
- python - 如何从 python 中的另一个 .py 文件调用函数?
- java - 如何通过Java获取服务器响应时间
- javascript - 如何理解节点 js 的以下函数输出
- android - 使用 FFmpeg 在图像上连续播放 gif
- javascript - 使用 Javascript 检索 Google Analytics 跟踪器名称时出现问题
- javascript - Sequelize 和 GraphQL 解析器不可为空的字段