为什么会出现“未定义”错误?

时间:2012-06-30 20:11:44

标签: javascript

我试图让用户把东西放到文本区域,输出应该是他写的重复x次,但是我得到一个错误“document.forme is undefined”。

你能帮我理解为什么它没有定义吗?

我的代码:

 <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>

3 个答案:

答案 0 :(得分:3)

好的,你有一些问题。第一个是您尝试访问尚不存在的表单元素:脚本位于表单元素之上,因此当您尝试获取表单时,表单不存在。如果您将脚本移动到页面底部,它将更好用。

其次,循环应该在函数内部,而不是围绕函数。

第三,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>

你可以see it in action on jsFiddle.

答案 1 :(得分:-2)

表单存储在集合中,可以像这样访问:

var form = document.forms[i]; 要么 var form = document.forms[name];

在您的情况下,i为0,而name是forme。

答案 2 :(得分:-2)

也许您应该尝试使用document.getElementsByName("forme")[0]代替document.forme