在分割成用于计算自身的零件后,无法从输入字段获取值

时间:2014-04-02 20:55:21

标签: javascript

当用户使用附加符号从文本字段发送值时,我想要求和一些值。

在分割了这个字段的值后,我总是得到NAN。

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

也许有人可以提供帮助:

我的HTML代码:

<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;

        }

也许有人可以提供帮助。

4 个答案:

答案 0 :(得分:0)

(parts[0]).innerHTML

部分不具有innerHTML属性。

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;

    }

答案 1 :(得分:0)

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

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

var parts = document.getElementById('testsum').value.split('+', 5), result = 0;
  for (var a = 0; a < parts.length;a++) {
    result += parseInt(parts[a]);
  }
  alert(result);
如果你想添加一些&#34;一些&#34;戴夫的答案是正确的。的值,或者您可以使用类似的东西,用相关的数组位置替换x和y:

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

许多人建议不要使用其他一些答案建议的eval,请参阅stackoverflow here

答案 2 :(得分:0)

您可以简单地使用:

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

DEMO FIDDLE

答案 3 :(得分:0)

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

谢谢大家。所有人都有并且会帮助我。太棒了。

我真的不明白为什么eval(...)不能使用,因为这对我的问题很有帮助,但是感谢你回答的链接(@Jeggs)。

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

再一次:非常 - 非常感谢所有