【问题标题】:input text box get NaN value输入文本框获取NaN值
【发布时间】:2013-06-07 14:28:38
【问题描述】:

我想在一个文本框中写一个值的总和。为此,我有这两部分代码:

HTML:

<label for="test1">Value(€)</label>
<input type="text" name="test1" id="test1" value="0"><br>

Javascript:

function selected_feature(event){
    //set to 0
    document.getElementById('test1').value = 0;

    //Loop
    for(var i=0; i<elements.selectedFeatures.length; i++)   {
        var elements;
        elements += parseFloat(elements.selectedFeatures[i].attributes.value_elements);
        document.getElementById('test1').value = elements;
    }

}

http://pastebin.com/N2jnaQ4x

结论:我在文本框中得到值“NaN”。我用'parsefloat'尝试了很多东西,但没有任何效果。如果我在函数末尾发出“警报(元素类型”),我会得到“数字”。 为什么文本框收到“NaN”?谁能帮助我?

谢谢

【问题讨论】:

  • 这取决于 'selectedFeatures' 包含的内容。乍一看,我会说其中至少有一个不包含数字(所以 'parseFloat' 返回 NaN)。
  • 如果不是数字,为什么我会在类型关闭的结果中得到一个数字?
  • 我使用 typeof 查看变量类型,我总是得到“数字”:pastebin.com/7EUWA4Kv
  • 因为 'elements' 是一个数字(NaN 是一个数字!)但是(一个或多个)'elements.selectedFeatures[i].attributes.value_elements' 的项目不是一个数字(那么'parseFloat' 返回 NaN,'elements' 将永远是 NaN)。
  • 我认为访问子节点有问题,所以你得到 NaN(不是数字)你检查是否...... parseFloat(elements.selectedFeatures[i].attributes.value_elements) 正在返回一个数字.. ...但是除此之外,您的分配 (document.getElementById('test1').value = elements;) 应该在 for 循环之后..跨度>

标签: javascript html openlayers nan typeof


【解决方案1】:

基于调试,我认为问题在于 value 字段的输入文本框声明未使用整数值声明。我在这个 jsFiddle 中发现了这一点,也许尝试在代码中的两个输入文本框的值字段中将值设置为 0 或空白。而不是文本框。您会看到,当您单击“添加两个值”时,它会向我们显示 NaN.. 但是当输入文本字段在运行时具有整数值时.. 您会看到它会加起来.. 我还没有想到找出如何解决这个问题 - 无论如何,只是分享..

试试这个

 <input type="text" id="one" value="" />
 <input type="text" id="two" value="" />

VS 这个

试试这个

 <input type="text" id="one" value="20" />
 <input type="text" id="two" value="30" />

在下面

JSFiddle Code Here

退出 - Nouvre Technologies 的 Lakhi Calantoc

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 2023-03-03
    • 2011-05-04
    • 2013-10-31
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    相关资源
    最近更新 更多