如何找到innerHTML的平均值?

时间:2017-10-23 23:59:30

标签: javascript html html5

我有输入字段并选择。对于不同的选择选项,有不同的方程式。在计算方程后,我使用.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;
&#13;
&#13;

2 个答案:

答案 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)。

其次,即使cd((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);