我有输入字段并选择。对于不同的选择选项,有不同的方程式。在计算方程后,我使用.innerHTML来显示结果。我得到的代码的第一部分工作,但我被困在最后一部分。当我尝试计算输出的平均值时,它显示了Nan。有人可以帮忙解决这个问题吗?提前谢谢。
<div id="container">
<input id="a" type="number">
<input id="b" type="number">
<select name="abc" id="select1">
<option value="Choose">Choose...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="none1">None</option>
</select>
<br>
<input id="c" type="number">
<input id="d" type="number">
<select name="abcd" id="select2">
<option value="Choose">Choose...</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="none2">None</option>
</select>
<span id="span1" class="percent"></span>
<span id="span2" class="percent"></span><br>
<span id="output"></span>
</div>
&#13;
SET GLOBAL max_user_connections = 100;
&#13;
答案 0 :(得分:1)
.innerHTML
通过在作为值传递的字符串上调用HTML解析器或从元素中提取来获取或设置元素的内容。当内容是或者只是文本(没有要解析的HTML)时,你应该使用.textContent
,因为这不会调用内容上的HTML解析器,这样可以节省处理能力。在您的情况下,您应该使用.textContent
。
现在,无论哪种方式,发送到.innerHTML
或.textContent
或从parseInt(stringToBeConverted, radix)
或parseFloat(stringToBeConverted)
获取的数据都是字符串,因此如果要对值进行数学计算,则需要先将其转换为数字。这可以通过以下几种方式完成:
Number(stringToBeConverted)
+stringToBeConverted
parseFloat()
NaN
现在,您有两个问题,首先当某些文本字段仍为空时,其值为空字符串,而空字符串上的0
返回<input id="a" type="number" value="0">
。这可以通过在HTML中为每个字段提供默认值a
来解决(即b
)。
其次,即使c
,d
,((a + b) / (a * b)).toFixed(2);
和NaN
都有数字值,您的数学也是如此:
a * b
当0
导致{{1}}时会导致{{1}},因为这会导致除零情况。
在进行数学运算之前,您需要更改算法以测试这种情况。
答案 1 :(得分:0)
我不知道你要做什么,但我认为这可能是正确的解决方案,它是获取百分比[i] HTML元素价值的有效方式:
更改
output.innerHTML = percent[i]/(percent.length);
到
output.innerHTML = percent.item(i).innerHTML/(percent.length);
或
output.innerHTML = percent[i].innerHTML/(percent.length);