【问题标题】:Real time javascript calculation based on current text基于当前文本的实时javascript计算
【发布时间】:2016-10-11 00:47:43
【问题描述】:

我对 javascript 很陌生,我正在尝试创建一个简单的实时计算。

我的想法是我从 0 开始,可以使用任一按钮进行加法或减法,结果将显示在我的“演示”div 中。

我正在尝试使用 var y = document.getElementById("demo").value; 来“选择”该结果;但显然它不起作用......

我知道这可能是非常低效的代码,但我仍在学习

HTML

<div>Score: <div id="demo">0</div> total points</div>

<button onclick="first()" href="#number-1">this adds 10</button>

<button onclick="second()" href="#number-1">this adds 7</button>

<button onclick="third()" href="#number-2">this subtracts 5</button>

<button onclick="reset()" href="#number-2">reset</button>

Javascript

function first() {
    var y = 0;
    var z = 10;
    var x = +y + +z;
    document.getElementById("demo").innerHTML = x;
}

function second() {
    var y = document.getElementById("demo").value;
    var z = 7;
    var x = +y + +z;
    document.getElementById("demo").innerHTML = x;
}

function third() {
    var y = document.getElementById("demo").value;
    var z = -5;
    var x = +y + +z;
    document.getElementById("demo").innerHTML = x;
}

function reset() {
    var y = 0;
    var z = -0;
    var x = +y + +z;
    document.getElementById("demo").innerHTML = x;
}

http://codepen.io/anon/pen/BLxoZy

【问题讨论】:

  • Div 元素不包含值document.getElementById("demo").value 你想获得innerHTML 所以将所有var y 更改为var y = document.getElementById("demo").innerHTML;,一切都会正常工作。
  • 它不会引起问题,但是你对一元加号运算符有点过分了,在你知道已经是数字的值上使用它。 (修复该部分后,您只需需要它来转换来自 DOM 元素的字符串值。)

标签: javascript math addition


【解决方案1】:

因为document.getElementById("demo").value,它不起作用,您需要使用document.getElementById("demo").innerHTML 来收集这样的值 -

function first() {
  var y = 0;
  var z = 10;
  var x = +y + +z;
  document.getElementById("demo").innerHTML = x;
}

function second() {
  var y = document.getElementById("demo").innerHTML;
  var z = 7;
  var x = +y + +z;
  document.getElementById("demo").innerHTML = x;
}

function third() {
  var y = document.getElementById("demo").innerHTML;
  var z = -5;
  var x = +y + +z;
  document.getElementById("demo").innerHTML = x;
}

function reset() {
  var y = 0;
  var z = -0;
  var x = +y + +z;
  document.getElementById("demo").innerHTML = x;
}

使用document.getElementById("demo").value,您可以收集表单输入值&使用document.getElementById("demo").innerHTML,您可以从您的HTML标签中收集数据。

【讨论】:

  • 但我也更新了代码以使其更容易:)
  • 一个 JSfiddle 就可以了。如果有的话,这个问题应该被标记为重复并关闭。或者至少解释为什么使用 .value 不起作用以及为什么 OP 应该使用 .innerHTML 然后它会得到一个有效的答案。
猜你喜欢
  • 2019-01-15
  • 1970-01-01
  • 2018-12-30
  • 2019-09-28
  • 1970-01-01
  • 2014-10-08
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多