javascript - element.innerHTML 在 Javascipt 中没有给出预期的结果
问题描述
我不确定我对这个问题的标题是否有意义(如果没有,请提出建议);
所以我在 HTML 中有这个非常简单的例子:
<button class="btn" type="button"> button1 </button>
<button class="btn" type="button"> button2 </button>
在 JS 中:
window.onload = () => {
var buttons = document.querySelectorAll('.btn');
buttons.forEach((btn) => {
btn.addEventListener('click', () => {
if (btn.innerHTML === 'button1') {
btn.style.background = 'green';
console.log('Button1 is clicked');
} else {
btn.style.background = 'red';
console.log('Button2 is clicked');
}
});
});
}
我认为它的行为会像预期的那样;但是我单击的任何按钮其背景都会变成红色。
你能解释一下为什么会这样吗?
提前非常感谢。
解决方案
条件btn.innerHTML === '1'
始终为false,因为第一个按钮的innerHTML的内容是button1,第二个按钮的innerHTML是button1。
你可以试试
if (btn.innerHTML.endsWith('1')){...
更新:文本内容周围有一些空格。您应该修剪该值以删除空格。另外,如果内容只是字符串(没有 HTML),我建议您使用innerText或textContent而不是innerHTML :
window.onload = () => {
var buttons = document.querySelectorAll('.btn');
buttons.forEach((btn) => {
btn.addEventListener('click', () => {
if (btn.textContent.trim() === 'button1') {
btn.style.background = 'green';
console.log('Button1 is clicked');
} else {
btn.style.background = 'red';
console.log('Button2 is clicked');
}
});
});
}
<button class="btn" type="button"> button1 </button>
<button class="btn" type="button"> button2 </button>
推荐阅读
- jquery - 我如何在 d3 图中 y 轴的点 0 上绘制额外的 x 轴
- angular - 将嵌套对象模型作为 typescript 中的请求参数传递
- node.js - Sequelize:嵌套包含/反向关联的问题
- javascript - 为什么错误“EventSource 的响应具有不是“text/event-stream”的 MIME 类型(“text/html”)。发生
- wordpress - 在简码中使用 get_the_terms
- c# - 我需要什么版本的 system.dll 才能在 c# 上启用 get{} 和 set{} 属性?
- api - 创建一个 API 来连接 ArangoDB 和 Prometheus 以获取 ArangoDB 内部数据的指标并将其暴露在 Prometheus 中
- python-3.x - 如何无限循环队列线程
- react-native - 我该如何解决这个问题?下面的控制按钮隐藏在日历界面(webview)中
- python-3.x - 特金特。在窗口中创建可调整大小的框架