javascript - JS : I can't get the inner HTML of elements with a specific class name

标签 javascript jquery css

我正在尝试用 javascript 创建一个计算器来锻炼我的技能。我已将 num 类添加到所有具有数字的按钮。

当我使用以下代码单击这些按钮时,我试图在控制台中显示这些按钮的 innerHTML:

var num = document.getElementsByClassName('num');
num.addEventListener('click', getNum);

function getNum(){
    console.log(num.innerHTML);
}

getNum();

但是我得到的只是

num.addEventListener is not a function.

这是我的代码笔:https://codepen.io/teenicarus/pen/wrEzwd

我做错了什么?

最佳答案

您需要像下面这样更改代码。 getElementsByClassName 返回元素集合。遍历元素并添加 click 事件监听器。在 getNum 中,您可以使用 this 访问被点击的按钮。

var num = document.getElementsByClassName('num');

for (var i = 0; i < num.length; i++) {
        num[i].addEventListener('click', getNum);
}

function getNum(){
    console.log(this.innerHTML);
}

您还可以像下面这样使用Array forEach:

[].forEach.call(num, function(el){
  el.addEventListener('click', getNum);
})

关于javascript - JS : I can't get the inner HTML of elements with a specific class name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46728596/

相关文章:

javascript - 无法清除下拉菜单的文本

javascript - Windows Phone 上的初始 window.orientation 始终为 0

javascript - 我们可以在删除父节点之前复制该节点吗?

html - 移动 View 上水平滚动画廊的问题

html - 如何使用 Bootstrap 和 Angular 实现自定义日期选择器?

html - 表中 <a> 的 Css 样式不起作用

javascript - 如何在 JavaScript 中为 Laravel 设置 CSRF?

javascript - 如何防止 jQuery apendTo 重复内容

javascript - 选择 span 标签内的文本

javascript - React 中的 Eventbrite