0

JavaScriptを使用してループし、すべてのラジオボタンの合計をページの下部にある入力要素に返すラジオボタンのあるフォームがあります。私が使用しているスクリプトはこれで、正常に動作します。

<script type="text/javascript">
function checkTotal() {
var radios = document.querySelectorAll('input[type=radio]'),
    sumField = document.querySelector('input[type=text]');
    var sum = 0;

    for (var i = 0, len = radios.length - 1; i <= len; i++) {
        if (radios[i].checked) {
            sum += parseInt(radios[i].value);
        }
    }
    sumField.value = sum;
}
</script>

ここに私のフォームがあります http://cognitive-connections.com/Prefrontal_Cortex_Questionnaire.htm

ただし、異なるグループにいくつかの質問がある別のフォームを作成する必要があり、各グループの合計を個別に合計し、それに応じてページ上の対応する入力要素に投稿する必要があります。これが私の新しいフォームです http://cognitive-connections.com/Prefrontal_Cortex_Questionnaire100913.htm

私は JavaScript の上級ユーザーではありませんが、プログラミング自体はかなりよく理解しています (笑)。私の頭では、異なるグループごとに一意の var と、それを投稿するための一意の要素を簡単に宣言できるはずだと言っています。結果は、各グループに対して同じループ (各グループの正しい変数) を使用します。しかし、document.querySelectAll の識別子として [name="elements name"] を追加すると、その名前の要素のみが取得され、要素自体に同じ名前を付けると、ラジオ ボタンは 1 つのラジオのみを許可する固有のプロパティを失います。質問ごとにボタンを一度に選択できますか? また、各グループのクラス ID を作成して、それを document.querySelectAll の識別子として使用しようとしましたが、まったく機能していないようです。どんな助けでも大歓迎です..

4

1 に答える 1

0

私の質問の理解によると、以下が私の答えです。そして、ここにフィドルhttp://jsfiddle.net/8sbpX/10/があります。

function enableQ(cls) {
  var ele = document.querySelectorAll('.' + cls)[0],
    ev = (document.addEventListener ? "#addEventListener" : "on#attachEvent").split('#');
  ele[ev[1]](ev[0] + "change", function () {
    var radios = ele.querySelectorAll('[type="radio"][value="1"]:checked').length;
    ele.querySelector('[type="text"]').value = radios;
  });

}

enableQ("rad-grp");
于 2013-10-09T19:56:58.017 に答える