javascript - 如何循环遍历标签元素并通过 OnClick 函数在显示上获取相应的内容?

标签 javascript html for-loop calculator

var key="";

//get key values
var x = document.getElementById("calculator");
var y = x.getElementsByTagName("span");

function calc()
{
    for(var i = 0; i <= y.length; i++)
    {
        key+=y[i].innerHTML;
        document.getElementById("display").innerHTML=key;

    }
};

我正在尝试:

  • 循环遍历我的代码中所有span标签的内容(其中 包含计算器的关键值) 使用“document.getElementsByTagName”
  • 当您单击计算器的相应键时(例如单击键 "8"),仅获取您单击的那个键的内容
  • 当您获得所单击的键的内容时,将其添加到 变量 key=""(例如 key+="8")
  • 在名为“display”的范围内显示结果,即黑色 计算器的屏幕。 (在黑屏上显示 数量:“8”)

这个程序基本上应该只获取您在计算器上单击的按键的内容并将其显示在屏幕上。

code我现在只是循环遍历跨度标签,获取它们的内容,但它失败了,因为无论您单击哪个键,它都会同时打印计算器显示中的所有跨度内容。 有办法解决吗?我知道还有其他选项,例如事件监听器或为每个键设置一个函数,但我想知道这段代码是否有一些逻辑并且可以完成以执行该任务。

最佳答案

将事件移至 JS 中,然后为单击的元素运行 calc 函数:

var key = "";
var x = document.getElementById("calculator");
var y = x.getElementsByTagName("span");
var display = document.getElementById("display");
for (var i = 0; i < y.length; i++) {
    addEvent(y[i], "click", calc);
}

function calc() {
    key += this.innerHTML;
    display.innerHTML = key;
}

function addEvent(elt, type, callback) {
    if (window.addEventListener) {
        elt.addEventListener(type, callback, false);
    } else if (window.attachEvent) {
        elt.attachEvent("on" + type, callback);
    }
}
#calculator {
    width:200px;
    height:380px;
}
div span {
    width:50px;
    height:50px;
    outline: 1px solid black;
    float:left;
    line-height:50px;
    background-color:#f6f6f6;
    font-family:"Neue Helvetica", sans-serif;
    font-size:15px;
    text-align: center;
}
#display {
    width:200px;
    height:80px;
    text-align:right;
    line-height:100px;
    font-size:25px;
    overflow:hidden;
    color:white;
    background-color:black;
}
#zero {
    width:100px;
}
<div id="calculator"> <span id="display">0</span>
 <span>AC</span>
 <span>+/-</span>
 <span>%</span>
 <span>÷</span>
 <span>7</span>
 <span>8</span>
 <span>9</span>
 <span>x</span>
 <span>4</span>
 <span>5</span>
 <span>6</span>
 <span>-</span>
 <span>1</span>
 <span>2</span>
 <span>3</span>
 <span>+</span>
 <span id="zero">0</span>
 <span>.</span>
 <span>=</span>

</div>

关于javascript - 如何循环遍历标签元素并通过 OnClick 函数在显示上获取相应的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33806499/

相关文章:

javascript - 带无限滚动的 Jquery UI 自动完成

html - 即使页面中未使用字体,浏览器也会下载它吗?

mysql - codeigniter如何从mysql中的数据库自动增加记录

java - 打破2个嵌套循环 "at once"

r - 从单个数据集中循环R个多个样本

javascript - 为 url 参数组合创建循环

javascript - 当我运行 react.js 代码时,我有这个错误说 "Cannot update a components while rendering a different component"

javascript - WinJS 在 Promise 数组中返回

php - 我无法显示来自两个具有不同记录的不同表的所有数据

Javascript编码问题