我有这段代码:
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循环结束后,警报未显示。我做错了什么? 谢谢
答案 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')
我认为错误是因为在循环结束的某个地方,我得到了未定义的