dポイントプレゼントキャンペーン実施中!

過去の質問と同じなのですが、id指定ではなくclass指定にしたいのです。
http://oshiete.goo.ne.jp/qa/7478978.html

<span class="suuji">1,234,567</span>
<span class="suuji">8,888</span>
<span class="suuji">999,999</span>
<span class="total">0</span>

idをclassに変更した場合の方法を教えてください。
よろしくお願い申し上げます。

質問者からの補足コメント

  • 何度も申し訳ございません、補足させて頂きます。

    下記のように、文字や空白が入る場合もございます。

    <span class="suuji">1,234,567</span>
    <span class="suuji">8,888</span>
    <span class="suuji"></span>
    <span class="suuji">該当なし</span>
    <span class="suuji">999,999</span>
    <span class="total">0</span>

    NaNなどのエラーが出ないように、空白や文字を無視して
    数字が入っている箇所の合計を出したいです。

    どうぞ宜しくお願い申し上げます。

      補足日時:2016/04/19 17:51
  • HAPPY

    すみません、私の記述ミスでした!!!
    教えて頂きました方法で、希望通りの結果が得られました!
    本当にありがとうございました!

    No.2の回答に寄せられた補足コメントです。 補足日時:2016/04/20 10:24

A 回答 (2件)

<script>


window.addEventListener('DOMContentLoaded', event=>{
function A(a){ return Array.prototype.slice.apply(a) }
var spans = A(document.querySelectorAll('span.suuji'));
var total = spans.map(s=>s.textContent).map(s=>s.replace(/\s|,/g,'')).map(s=>parseInt(s,10)).filter(n=>!isNaN(n)).reduce((p,v)=>p+v).toString().replace(/(\d)(?=(\d{3})+$)/g,'$1,');
A(document.querySelectorAll('span.total')).forEach(s=>s.textContent=total);
}, false);
</script>
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます!!!!
丁寧に教えて頂き恐縮です

コードをコピーペーストして、試してみましたのですが、上手く反応しませんでした。
dreamweverによると、window.addEventListener('DOMContentLoaded', event=>{ にシンタックスエラーがあります。と表示されます。
お手数ですが、どの部分がエラーなのか教えて頂けると嬉しいです。

厚かましくもよろしくお願い申し上げます。

お礼日時:2016/04/20 10:15

<script>


window.onload=function(){
var n=document.getElementsByTagName("span");
var v=0;
for(var i=0;i<n.length;i++){
if(n[i].class.match(/^suuji[0-9]+$/)){
v +=parseInt(n[i].innerHTML.replace(/,/g,''));
}
}
var num=v.toString();
while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2")));
document.getElementById("total").innerHTML=num;
}
</script>
<span class="suuji1">1,234,567</span>
<span class="suuji2">8,888</span>
<span class="suuji3">999,999</span>
<span class="total">0</span>
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます!!!

試してみたのですが、うまく動きませんでした。
私も、if(n[i].class.match ここを変えたり色々試しているのですが、classにしたら動かないのです。。。

頂きました回答の
<span class="total">0</span>を<span id="total">0</span>にしてもダメでした。
ちなみに、
<span class="suuji1">1,234,567</span>
<span class="suuji2">8,888</span>
<span class="suuji3">999,999</span>
このclassは全て
<span class="suuji">で統一したいです。

お手数ですが、動かない原因が分かりましたら是非教えてください。
よろしくお願い申し上げます。

お礼日時:2016/04/19 17:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!