2

選択した複数のオプションの複数の結果を表示したいのですが、ここではPHPとJavaScriptのコードを表示しています。

function save() {
    if (!validateSave())
        return;
    var e;
    var result;
    e = document.getElementsByName("q1[]");
    for (var j = 0; j <= e.length - 1; j++) {
        if (e[j].checked) {
            result = "1:" + e[j].value;
            //break;
        }
} 

HTMLコード

 <div class="qright">
        <!-- multioption handler --------------------------------------------------->
        <input type="hidden" name="multioption" value="true"  />
                    <!-- end ------------------------------------------------------------------->
        <label for="q1"><input type="checkbox" name="q1[]" value="1" class="styled" />Reducing cost</label>
        <label for="q1"><input type="checkbox" name="q1[]" value="2" class="styled" />Upgrading your hardware and software infrastructure</label>
        <label for="q1"><input type="checkbox" name="q1[]" value="3" class="styled" />Aligning the IT goals with the overall business strategy</label>
        <label for="q1"><input type="checkbox" name="q1[]" value="4" class="styled" />Enabling agile working</label>
        <label for="q1"><input type="checkbox" name="q1[]" value="5" class="styled" />Streamlining supplier management</label>
        <label for="q1"><input type="checkbox" name="q1[]" value="6" class="styled" />Improving network availability/access</label>
        <label for="q1"><input type="checkbox" name="q1[]" value="7"class="styled"  />Improving the utilisation of your network</label>
    </div>    

複数のオプションを選択すると、1つの値しか表示されませんが、JavaScript関数で何を変更する必要がありますか?

4

2 に答える 2

0

document.getElementsByName("q1[]");に置き換えるdocument.getElementsByName("q1");

于 2012-05-10T13:26:08.997 に答える
0
result = "1:" + e[j].value;

これは、一致するものが見つかるたびに結果を初期化するように見えます。(つまり、以前の検索を削除して、新しい検索で上書きします)

あなたは使用する必要があります

result += j+":" +e[j].value;

これがデータの複数の要素を保存するための良い方法であるかどうかはわかりませんが。

おそらくあなたは配列を使うべきですか?

result.push(e[j].value);

(配列の場合、結果変数を配列として初期化する必要がありますvar result = new Array;

于 2012-05-10T13:26:40.063 に答える