拆分为部分后无法从输入字段中获取值以进行计算本身

Can't get value from input field after split to parts for calculate itself

本文关键字:获取 计算 字段 输入 拆分      更新时间:2023-09-26

当用户从带有加号的文本字段发送值时,我想对一些值求和。

拆分此字段的值后,我总是得到 NAN。

我已经尝试了几个选项(parseInt,parseFloat),正如你在javascript代码中看到的那样,但无法让它工作。

也许有人可以提供帮助:

我的网页代码:

<input type="text" id="testsum" placeholder="gelieferte CBM" value="5+6+8+2" onblur="CbmErrechnen(this.value)">

我的JavaScript:

function CbmErrechnen () {
            var parts = document.getElementById('testsum').value.split('+', 5);
            var zahl0  = parseInt((parts[0]).innerHTML, 10);
            var zahl1  = parseInt((parts[1]).innerHTML, 10);
            var zahl2  = parseFloat(parts[2]);
            var zahl3  = parseFloat(parts[3]);
            var zahl4  = parseFloat(parts[4]);
        var sum = (zahl0)+(zahl1);
            alert(sum);
            return false;
        }

也许有人可以提供帮助。

编辑:根据下面的评论进行扩展。

您在粘贴的示例中的 parseInt 没有 dave 提到的 innerHTML 属性。在下面的代码中,我们迭代数组中的每个值,该值是从拆分生成的,并对每个值求和(当然,这假设您要将所有值相加)。

var parts = document.getElementById('testsum').value.split('+', 5), result = 0;
  for (var a = 0; a < parts.length;a++) {
    result += parseInt(parts[a]);
  }
  alert(result);

如果你想添加"一些"值,Dave 的答案是正确的,或者你可以使用类似的东西,用相关的数组位置替换 x 和 y:

var result = parseInt(parts[x]) + parseInt(parts[y])

许多人建议不要使用eval,其他一些答案建议在这里查看stackoverflow

(parts[0]).innerHTML

部件将没有内部 HTML 属性。

function CbmErrechnen () {
        var parts = document.getElementById('testsum').value.split('+', 5);
        var zahl0  = parseInt(parts[0]);
        var zahl1  = parseInt(parts[1]);
        var zahl2  = parseFloat(parts[2]);
        var zahl3  = parseFloat(parts[3]);
        var zahl4  = parseFloat(parts[4]);
    var sum = (zahl0)+(zahl1);
        alert(sum);
        return false;
    }

您可以简单地使用:

eval(document.getElementById("testsum").value);

演示小提琴

我对快速而多的答案感到非常惊讶。

谢谢大家。他们都已经并将帮助我。真的太棒了。

真的不明白为什么 eval(...) 不好用,因为这对我的问题很有帮助,但感谢您提供回答这个问题的链接 (@Jeggs)。

因为我只在本地使用此代码,所以性能和安全性对我来说并不重要。

所以再来一次:非常 - 非常感谢大家