Javascript 将类元素拉入数组中,然后对它们求和
我对Javascript非常陌生,需要一些帮助才能做到这一点。这些类将从不同的表中提取(如下所示)。我只需要一种方法,从每个类中提取所有单元格值,并将它们相加。所以一级=1234+1234。我不知道document.getElementByClassName是否有效?任何帮助都将不胜感激Javascript 将类元素拉入数组中,然后对它们求和,javascript,Javascript,我对Javascript非常陌生,需要一些帮助才能做到这一点。这些类将从不同的表中提取(如下所示)。我只需要一种方法,从每个类中提取所有单元格值,并将它们相加。所以一级=1234+1234。我不知道document.getElementByClassName是否有效?任何帮助都将不胜感激 <table> <tbody> <tr><td class="classone">1234</td></tr> <tr&
<table>
<tbody>
<tr><td class="classone">1234</td></tr>
<tr><td class="classtwo">1234</td></tr>
<tr><td class="classthree">1234</td></tr>
</tbody>
</table>
<table>
<tbody>
<tr><td class="classone">1234</td></tr>
<tr><td class="classtwo">1234</td></tr>
<tr><td class="classthree">1234</td></tr>
</tbody>
</table>
1234
1234
1234
1234
1234
1234
文档。GetElementsByCassName在IE(8及以下)中除外
对于IE8支持,您可以使用querySelectorAll:
function sumByClass(classname){
var els;
var i, sum = 0;
if(document.getElementsByClassName) // Modern
els = document.getElementsByClassName(classname);
else if(document.querySelectorAll) // IE 8
els = document.querySelectorAll((' ' + classname).replace(/ +/g, '.'));
for(i = els.length; i--;)
sum += parseInt(els[i].innerText || els.textContent, 10)
return sum;
}
对于IE7和IE6,您可以查看我的答案,以定义一个函数,该函数按类名获取元素,在IE8+中返回节点列表,但在IE7及以下版本中返回数组。对于跨浏览器解决方案,您只需使用该列表/数组对值求和,方法与我在上面所做的相同:
function sumByClass(classname){
var els = GEBCN(classname);
var i, sum = 0;
for(i = els.length; i--;)
sum += parseInt(els[i].innerText || els.textContent, 10)
return sum;
}
当然,您也可以使用类似的框架/库来简化这一过程。如果您是JavaScript新手,我会看看jQuery JavaScript库。您必须使用以下方法将其添加到所有html页面:
<script type="text/javascript" https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
您是在使用纯javascript,还是在jquery之类的帮助下。我只需要它工作:)如果类名有多个类,比如
addByClass('classone-classtwo'),那就不行了4936
。否则,它可以正常工作,但是如果需要多个类,那么getElementsByClassName
的工作方式就是将“+classname
更改为(''+classname.)。替换(/+//g'.')
使其addByClass('classone-class2')==4936
,那么脚本行是否会出现在页面的开头?是的,并确保它与任何其他JavaScript行相关,以便您可以在链接到的其他外部JavaScript文件中使用它。
<script type="text/javascript" https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
function addByClass(classname) {
var sum = 0;
$.each($(' ' + classname).replace(/ +/g, '.'), function(i, item) {
sum += parseInt($(item).html());
});
return sum;
}