for循环后的Javascript警报无效

时间:2017-07-21 17:07:23

标签: javascript loops for-loop onclick

我有这段代码:

var txt = document.getElementsByClassName('rich-table-row');

document.getElementById("suma").onclick = function suma(){

   var calcule = 0;  

   for(var i = 1; i < txt.length; i++) {

    calcule +=  Number(((txt[i].getElementsByClassName('rich-table-cell')[2].getElementsByTagName('span')[0].innerText).substring(2)).replace(',',''));

   }

alert('test');

};

for循环结束后,警报未显示。我做错了什么? 谢谢

2 个答案:

答案 0 :(得分:0)

正如@James所提到的,如果您尝试删除多个逗号,则需要使用定义为 global 的正则表达式。但是,正如他所说的那样,这不应该阻止该功能继续进行(仅使calcule成为NaN)。

如果没有标记,很难说出问题是什么,但我怀疑你的代码中有一个ReferenceError,可能与你试图解析的标记有关(可能没有返回单元格或跨度。)

我已经对您的功能进行了一些重构,包括将您的呼叫更改为replace()以使用RegExp并添加了假定的标记;它按预期工作:

JS:

var rows = document.getElementsByClassName('rich-table-row');

document.getElementById('suma').onclick = function () {
    var calcule = 0; 
    var cell, span, text;

    for(var i = 1; i < rows.length; i++) {
        cell = rows[i].getElementsByClassName('rich-table-cell')[2];
        span = cell.getElementsByTagName('span')[0];
        text = span.innerText.substring(2).replace(/[,]/g,'');
        calcule += Number(text);
    }

   alert(calcule);
};

HTML

<div class="rich-table">
  <div class="rich-table-row">
    <div class="rich-table-cell"></div>
    <div class="rich-table-cell"></div>
    <div class="rich-table-cell">
      <span>AB697,871,184</span>
    </div>
  </div>
  <div class="rich-table-row">
    <div class="rich-table-cell"></div>
    <div class="rich-table-cell"></div>
    <div class="rich-table-cell">
      <span>AB697,871,185</span>
    </div>
  </div>
</div>

<button id="suma">SUMA</button>

答案 1 :(得分:0)

我认为我管理如何解决问题...

由于控制台的错误,我将这样的IF插入了if if(typeof(txt [i] .getElementsByClassName('rich-table-cell')[2])!='undefined')

我认为错误是因为在循环结束的某个地方,我得到了未定义的