【问题标题】:Dynamical Calculator Javascript动态计算器 Javascript
【发布时间】:2014-08-12 23:53:18
【问题描述】:

它是一个计算器,它具有我想从中获取值(1、2、3 等)的跨度和两个字段:第一个用于显示用户正在输入的内容,第二个用于计算结果。 如何获取值的问题,所以当我点击跨度时,它将显示在第二个字段中

这里是代码。 http://jsfiddle.net/ovesyan19/vb394983/2/

<span>(</span>
<span>)</span>
<span class="delete">←</span>
<span class="clear">C</span>
<span>7</span>
<span>8</span>
<span>9</span>
<span class="operator">÷</span>
....

JS:

var keys = document.querySelectorAll(".keys span");

keys.onclick = function(){
    for (var i = 0; i < keys.length; i++) {
        alert(keys[i].innerHTML);
    };
}

【问题讨论】:

  • 你有JS代码要展示吗?
  • @putvande 我更新了小提琴。我有一些。我试图查看单击时返回的内容,但没有返回任何内容

标签: javascript html css


【解决方案1】:
var keys = document.querySelectorAll(".keys span");

for (var i = 0; i < keys.length; i++) {
    keys[i].onclick = function(){
        alert(this.innerHTML);
    }
}

keysNodeList,因此您不能在其上附加onclick。您需要通过循环将其附加到该列表中的每个元素。要获得价值,您可以简单地使用this.innerHTML

Fiddle

【讨论】:

  • 因为当onclick函数被触发时,keys[i]中的i将等于keys.length而不是当前索引。
【解决方案2】:

这应该可以帮助您入门.. 您需要获取您单击的跨度的值,然后将其附加到您的结果字段中。让这个计算器工作还有很多事情要做,但这应该会让你指向正确的方向。

小提琴更新:http://jsfiddle.net/vb394983/3/

JavaScript (jQuery):

$(".keys").on("click","span",function(){
    var clickedVal = $(this).text();
    $(".display.result").append(clickedVal);
});

【讨论】:

  • 问题未标记为 jquery。
  • 至少我的解决方案适用于 Blazemonger。此外,他的要求也相当模糊,因此这是一个快速有效的解决方案(与您否决的其他答案不同)
  • 我没有对其中任何一个投反对票。并且一如既往地在问题下方清楚地标明了标签。
【解决方案3】:

如果您使用 JQuery,您可以在 span 元素上设置点击事件。 例如:

$("span").click(
    function(){
        $("#calc").val($("#calc").val() + $(this).text());
    });

见: http://jsfiddle.net/vb394983/6/

这只是为了回答你的问题,但你真的应该给数字一个诸如“valueSpan”之类的类,给操作符一个诸如“operatorSpan”之类的类,并基于这些类应用事件,以便按钮的行为与你一样期待计算器。

【讨论】:

  • 问题没有用 jquery 标记。
  • 感谢您的解决方案。但我知道如何在 jQuery 中做到这一点。问题是我不知道如何使用原生 js
  • 他的显示结果也在一个范围内。这也将其用作点击事件。应该使用 .on 如下所示。您的小提琴链接也不起作用,我在他的代码上没有运气就尝试了您的代码。
  • 糟糕,复制并粘贴了错误的小提琴。解决它。正如我所说,我只是在回答这个问题,即当你单击它时如何从跨度中获取值。为了让它表现得像一个普通的计算器,我不会像我在答案中所说的那样使用任何跨度点击事件。
【解决方案4】:

http://jsfiddle.net/vb394983/7/

   var v="",
   max_length=8,
   register=document.getElementById("register");
   // attach key events for numbers   
   var keys = document.querySelectorAll(".keys span");
   for (var i = 0; l = keys.length, i < l; i++) {
       keys[i].onclick = function(){
            cal(this);
       } 
   };
   // magic display number and decimal, this formats like a cash register, modify for your own needs.
   cal = function(e){

        if (v.length === self.max_length) return;
        v += e.innerHTML;
        register.innerHTML = (parseInt(v) / 100).toFixed(2);

   }

【讨论】:

  • 你需要我可以用很少的代码让整个事情像计算器一样工作
  • 虽然其他人争论不休,但我的答案实际上就像一个真正的计算器:注意算术不起作用,如果需要我可以添加两个 ;-)
  • 谢谢,但我想自己做:)
  • 不错的小项目!喜欢我希望我的例子有所帮助!
  • 当然,它很有帮助!
【解决方案5】:

使用 JQuery 会让您的生活更轻松:

$('.keys span').click(function() {
    alert(this.innerHTML);
});

【讨论】:

  • 我只是推荐使用 JQuery 并举例说明它的好处。天啊
  • OP 的其他评论说:感谢您的解决方案。但我知道如何在 jQuery 中做到这一点。问题是我不知道如何使用原生 js
  • 啊,对不起。没看到:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多