首页 > 解决方案 > 我不知道为什么我不断得到 NaN

问题描述

我正在学习 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));

标签: javascript

解决方案


您需要考虑<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; 

推荐阅读