正如@詹姆斯提到的,如果您试图删除多个逗号,则需要使用定义为全局的正则表达式。但是,就像他所说的那样,这不应该阻止功能继续(仅导致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>
你确定你的for循环正在执行,甚至是控制进入'suma'函数吗?你可以在输入函数suma时通过'console.log();'知道。 另请检查您的控制台。 –
控制台中可能有一个javascript错误等着你。 – James
什么都没有。检查您的浏览器控制台是否存在拼写错误...顺便说一下,数组基于零 –