0

ユーザーにテキスト領域に何かを入れさせようとしています。出力は、x回繰り返して彼が書いたものになるはずですが、「document.formeisundefined」というエラーが表示されます。

なぜそれが定義されていないのか理解するのを手伝ってくれませんか?

私のコード:

 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>input home work</title>
<script type="text/javascript">


 var help= document.forme.tryout.value;

 for (x=1; x<=10;x++){

 function numberCheak (){

     document.write("this is"+"  "+help++);

     }


 }
  </script>


  </head>

 <body>
<form name="forme">

<input name="tryout" type="text" />
  <input type="button" value="click me" onClick="numberCheak();"/>


</form>

</body>
</html>
4

2 に答える 2

3

わかりました、いくつか問題があります。1 つ目は、まだ存在しないフォーム要素にアクセスしようとしている場合です。スクリプトはフォーム要素の上にあるため、取得しようとしてもフォームは存在しません。スクリプトをページの一番下に移動すると、うまく機能します。

第 2 に、ループは関数内にある必要があり、関数にラップされていません。

第三に、document.write奇妙な副作用があり、ドキュメントが書き換えられ、スクリプトが正しく続行されなくなります。

これが私の修正されたスクリプトです

function numberCheak() {
    var help = document.forme.tryout.value;
    for (var x = 1; x <= 10; x++) {
        document.getElementById("output").innerHTML += help;
    }
}

それに付随する HTML フォーム

<form name="forme" id="forme">
    <input name="tryout" type="text" /> 
    <input type="button" value="click me" onclick="numberCheak();" /> 
    <span id="output"></span>
</form>

jsFiddle で動作を確認できます。

于 2012-06-30T20:33:39.343 に答える
-2

フォームはコレクションに保存され、次のようにアクセスできます。

var form = document.forms[i]; また var form = document.forms[name];

あなたの場合、iは 0 であり、nameフォームです。

于 2012-06-30T20:16:10.927 に答える