我不知道为什么我会不断得到NaN

时间:2019-11-26 17:46:27

标签: javascript

我正在学习JavaScript。我做了一些没有问题的代码,但是当我想编写新代码以使我可以计算表的调用时,我一直在获取NaN,我不知道为什么。

这是我的JS代码

var table = document.getElementById("table"), sumVal = 0;

            for(var i = 1; i < table.rows.length; i++)
            {
                sumVal = sumVal + parseInt(table.rows[i].cells[0].innerHTML);
            }
            console.log(sumVal);
            document.getElementById("val").innerHTML =  sumVal;

这是我的桌子

 <table id="table" class="table table-bordered">
                <thead>
                  <tr>
                    <th scope="col">Code</th>
                    <th scope="col">Prenome</th>
                    <th scope="col">Nom</th>
                    <th scope="col">Frais de inscription</th>
                    <th scope="col">Le rest</th>
                    <th scope="col">Date de paiment</th>
                    <th scope="col">dure de paiment</th>

                   </tr>
                </thead>
                <tfoot>
                   <tr>
                   <th></th>
                    <th></th>
                     <th></th>
                   <th></th>
                   <th id="val"></th>
                    <th></th>
                     <th></th>
                 </tr>
               </tfoot>
              <tbody>
                   <tr> 
                    @foreach($students as $student)

                    <th  scope="row">{{$student->id}}</th>
                    <td>{{$student->student->student_name}}</td>
                    <td>{{$student->student->student_last_name}}</td>
                    <td>{{$student->frais_inscription}}</td>
                    <td>{{$student->Rfrais_inscription}}</td>
                    <td width="140" id="xd">{{$student->payment_date->Dfrais_inscription}}</td>
                    <td >{{$student->Afrais_inscription}} Mois</td>
                    <td ></td>

                   </tr>

                   @endforeach
              </tbody>
             </table>

我尝试了另一种方法,只是想知道我所缺少的东西,并且效果很好。我得到了结果。

代码如下:

var table = document.getElementById("table"), sumVal = 0;

console.log(parseInt(table.rows[1].cells[4].innerHTML) + parseInt(table.rows[2].cells[4].innerHTML));

2 个答案:

答案 0 :(得分:1)

您需要考虑<tr>的innerHTML为空的时间。 parseInt("")将返回NaN,并且您无法递增NaN,因此结果将仅为NaN

请参阅下文。

var table = document.getElementById("table"), sumVal = 0;

            for(var i = 1; i < table.rows.length; i++)
            {
             if (table.rows[i].cells[0].innerHTML !== ""){
                sumVal +=parseInt(table.rows[i].cells[0].innerHTML);   
            }
console.log(sumVal);
document.getElementById("val").innerHTML =  sumVal; 

答案 1 :(得分:0)

填写一些数字,然后将您的const更改为std::mutex。 建议您出于安全考虑使用innerText

Console.log()用于常规调试。

纯HTML可以正常工作。 我不确定您如何填写数字,并且在填写之前和之后分别执行计算部分。 如果它总是在表填充后​​执行。如果textContenttextContent

,请确保输入0

$student->frais_inscription
empty