0

これは、登録ページを作成しようとする私の試みですが、for ループの後に続くものは実行されず、なぜ途方に暮れていますか? 以下はJavaScriptコードとフォームです

<script type='text/javascript'>
myArray = ['username','email','password','password2'];
reply = ['User Name','Email','Password','Password Again'];
message = "Please Type you're ";
start = "<font color = red size='-1'>";
end = "</font>";
test = 10;
obj = validate();
alert (obj);
function validate(){

for (var i=0; i<=myArray.length; i++) {
               if (document.getElementById("in"+myArray[i]).value == "")
               {
                   document.getElementById(myArray[i]).innerHTML = start+message+reply[i]+end;
                   test = 30;
               }
                }
alert ("test");
}

<form action="echo.php" method="post" name="register" onsubmit="return validate();">
<table>
    <tr>
      <td width="185"><font size="2">First Name</font></td>
      <td width="499">
        <input id = "infirst_name" name="first_name" type="text" /><div id="first_name"></div></td>
    </tr>
    <tr>
      <td><font size="2">Last Name</font></td>
      <td><input id = "inlast_name" name="last_name" type="text" /><div id="last_name"></font></div></td>
    </tr>
    <tr>
      <td><font size="2">Username*</font></td>
      <td>
        <input id = "inusername" name="username" type="text" /><div id="username"></div></td>
    </tr>
    <tr>
      <td><font size="2">Email*</font></td>
      <td><input id = "inemail" name="email" type="text" /><div id="email"></div></td>
    </tr>
    <tr>
      <td><font size="2">Password*</font></td>
      <td><input id = "inpassword" name="password" type="password" /><div id="password"></div></td>
    </tr>
    <tr>
      <td><font size="2">Repeat Password*</font></td>
      <td>
        <input id = "inpassword2" name="password2" type="password" /><div id="password2"></div></td>
    </tr>
    <tr>
    <tr>
      <td><font size="2">I have read and Agree to the Terms and Conditions</font></td>
      <td>
        <input id = "incheckme" name="checkme" type="checkbox" /><div id="checkme"></div></td>
    </tr>
    <tr>
      <td><input type="submit" value="Register" /></td>
      <td>&nbsp;</td>
    </tr>
  </table>
</form>
4

3 に答える 3

6

ループを修正してみてください:

for (var i=0; i < myArray.length; i++) {

キャッチされていないエラーが発生した場合、JavaScript は実行を停止します。あなたの場合、最後の要素を超えてループしたようです (そして、未定義のオブジェクトに innerHTML を設定しようとしました)。

于 2012-04-10T11:18:12.007 に答える
2

ほとんどの場合、配列の末尾を超えて反復処理を行いますが、そこに何かがあるように参照します。

于 2012-04-10T11:18:03.083 に答える
1

JS コンソール出力を参照してください。おそらく、エラーがあると表示されます。 i長さが足りませんmyArray: ループ条件を "i<=" から "i<" に変更すると問題ありません。

于 2012-04-10T11:18:52.393 に答える