我正在计算总数。我从div中得到和。但总的来说,我得到的不是数字而是(NaN - Not a Number)
JavaScript函数:
<script type="text/javascript">
function calculateTotal(){
var total = document.getElementById('valor1').innerHTML*1 + document.getElementById('valor2').innerHTML*1 + document.getElementById('valor3').innerHTML*1 + document.getElementById('valor4').innerHTML*1 + document.getElementById('valor5').innerHTML*1 + document.getElementById('valor6').innerHTML*1;
document.getElementById('total').innerHTML = total;
}
</script>
编辑:
我发现了错误,我在DIV里面有一个结束标签,像这样:
<center><div id="valor1"></center></div>
更改为:
<center><div id="valor1"></div></center>
不能使用document.getElementById('valor1')。直接innerHTML。你要把这个转化成数字。请试试这个
var value = document.getElementById('valor1').innerHTML;
var number = parseFloat(value)||0;
对每个有number的div innerHTML执行此操作。
var number = parseFloat(value)||0;
如果div为空或div html不能转换为数字,上面的行将帮助您将0赋值给value。
在执行操作前使用parseFloat(document.getElementById('x').innerHTML)
将其转换为数字:
var total = parseFloat(document.getElementById('x1').innerHTML) + parseFloat(document.getElementById('x2').innerHTML);
你也可能想检查它们是否为数字,这里有一个使用isNaN
的简单测试:
alert((isNaN("23"))?'not number':'number');
HTML:
<div id="valor1">2</div>
<div id="valor2">2</div>
<div id="valor3">ccccc</div>
<div id="valor4">2</div>
<div id="valor5">2</div>
<div id="valor6">2</div>
<hr/>
<div id="total">0</div>
JavaScript: function $(id) { return document.getElementById(id); }
function get(elem) { return parseFloat($(elem).innerHTML) || 0; }
(function() {
var total =
get('valor1') * 1 + get('valor2') * 1 + get('valor3') * 1 +
get('valor4') * 1 + get('valor5') * 1 + get('valor6') * 1;
$('total').innerHTML = total;
}());
工作和演示的一点优化。
为什么停在这里?:)我们可以做得更好(我认为):
function get(elem) {
return (parseFloat($(elem).innerHTML) || (function() {
$(elem).innerHTML += " <i>Not a number assumed 0</i>";
return 0;
}()));
}
和更新后的演示。
编辑:Chrome上没有错误&Mozilla (Linux)。
尝试使用parseInt()
var total = parseInt(document.getElementById('valor1').innerHTML)*1 + parseInt(document.getElementById('valor2').innerHTML)*1 + ... ;
等等
这将确保您从字段中得到的实际上是一个数字
你试过把这些部分放在括号里吗?
(document.getElementById('valor1').innerHTML * 1) + ...
见:http://rx4ajax-jscore.com/ecmacore/operator/predence.html
使用parseInt(var string)函数更好;
parseInt(document.getElementById('valor1').innerHTML) + ...