0

以下では、各質問をループするために for ループを使用しました。

for (var i=0;i<=questions;i++){   
    if ($("[class*=q" + i + "_mark]").length == 1) {
        var bold_marks='<strong>0</strong>';
        var t_marksHtml = t_marks.val();
        $("[class*=q" + i + "_mark]").val(t_marksHtml).attr('readonly', true);
    }                    
}

今私がやりたいことは、各質問と各質問内の各要素を検証するように検証関数を作成することですが、問題は foreach 関数を使用して各行を次のようにループしようとしていることです:

function validation() {

    var alertValidation = "";
    var _qid = "";
    var _msg = "";
    var marks = parseInt($("[class*=q" + i + "_mark]").text()); 

    _qid = $(".q"+questionno+"_ans_org").text();
    _msg = "You have errors on Question Number: " + _qid + "\n";

$("[class*=q" + i + "_mark]").each(function() {

if (!this.value) {
    alertValidation += "\n\u2022 You have not entered in a value in the Indivdiaul Marks textbox all your Answers\n";
}

if (alertValidation != "") {
    return false; //Stop the each loop 
}
});    

     $(".q"+questionno+"_ans_org").each(function(){


if($("[class*=q" + i + "_mark]").text() < '0')
{

 alertValidation = "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Need To Remove " + Math.abs(marks) +  " Marks";   
}

        else if($("[class*=q" + i + "_mark]").text() > '0')
{

 alertValidation = "Your Total Marks Remaining does not equal 0 \n\n\u2022 You Have " + marks +  " Marks Remaining";   
}

            if (alertValidation != "") {
                return false; //Stop the each loop 
            }

});

    if (alertValidation != "") {
        alert(_msg + alertValidation);
        return false;
    }

    return true;
}

明らかに、私は foreach メソッドを使用しているため、iは未定義です。さて、私の質問は、上記の検証関数に foreach ループまたは for ループを使用した方が良いということです。コードが機能するように上記のコードを修正する方法を知っている人はいますか未定義iエラー?

以下はhtmlコードです:

<table border='1' id='markstbl'>
<thead>
<tr>
<th class='answermarksth'>Marks per Answer</th>
<th class='totalmarksth'>Total Marks</th>
<th class='noofmarksth'>Marks Remaining</th>
</tr>
</thead>
<tbody>

<tr class="questiontd">
<td class="answermarkstd">
<input class="individualMarks q1_mark_0"  q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
<td class="totalmarkstd" rowspan="2">6</td>
<td class="noofmarkstd q1_ans_text"  q_group="1" rowspan="2"><strong>5</strong></td>
</tr>

<tr class="questiontd">
    <td class="answertd" name="answers[]">D</td>
<td class="answermarkstd">
<input class="individualMarks q1_mark_0"  q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
</tr>

<tr class="questiontd">
<td class="answermarkstd">
<input class="individualMarks q2_mark_0"  q_group="1" name="answerMarks[]" id="individualtext" type="text" />
</td>
<td class="totalmarkstd" rowspan="1">6</td>
<td class="noofmarkstd q2_ans_text"  q_group="1" rowspan="1"><strong>5</strong></td>
</tr>
</tbody>
</table>
4

1 に答える 1

0

それ以外の

$("[class*=q" + i + "_mark]").each(function() {

使うだけ

$("[class*='q'").each(function(i) {

i in the $.eachループは、反復の現在の入力クラスになります。

他のループについても同じアプローチに従います。

于 2012-12-03T20:45:19.113 に答える