日期:2014-05-18  浏览次数:20520 次

初学JS,为什么同一段代码,一个执行,一个不执行呢,请高手说说为什么,急,100分,100分
<script   lanuage= "javascript ">

var   glovar;
function   start()
{
textbox1.value+= "ok!! ";
glovar=setTimeout( "start() ",1000);
}
function   stop()
{
clearTimeout(glovar);
}

  start();
//真正的执行定时操作
</script>
<body>
<input   type= "text "   id= "textbox1 ">
<input   type= "button "   value= "停止 "   onclick= 'stop() '>

</body>
上面的代码没有一点反映,但是稍作改动,就行了如下
<script   lanuage= "javascript ">

var   glovar;
function   start()
{
textbox1.value+= "ok!! ";
glovar=setTimeout( "start() ",1000);
}
function   stop()
{
clearTimeout(glovar);
}
</script>

<body>
<input   type= "text "   id= "textbox1 ">
<input   type= "button "   value= "停止 "   onclick= 'stop() '>
<script   language= "javascript ">
  start();
//真正的执行定时操作
</script>

-------------------
请问高人,为什么呢??
</body>


------解决方案--------------------
帮你顶下``
------解决方案--------------------
因为速度太快?下面的东西还没出来,所以读取不到文本框
------解决方案--------------------
放在 <BODY> 之前的代码是在 <BODY> 加载之前被加载的,这个时候textbox1还没有被加载,没有效果应该是这个原因吧
------解决方案--------------------
第一个没有事件引发执行呀。
------解决方案--------------------
一般来说对js函数的定义放在head标记中,而对js函数的调用放在 <body> </body> 之间
------解决方案--------------------
因为你开始就执行start()中的textbox1.value+= "ok!! ";而这个时候html文档还没生成完全,还只生成到start();这里,就是 <input type= "text " id= "textbox1 "> 还没生成,还不存在textbox1,所以
textbox1.value+= "ok!! ";这句就会出错
------解决方案--------------------
<input type= "text " id= "textbox1 ">
这个控件的问题
上面的调用时 他还没有。
下面是在他加在后调用当然可以了。

------解决方案--------------------
放在 <BODY> 之前的代码是在 <BODY> 加载之前被加载的,这个时候textbox1还没有被加载,没有效果应该是这个原因吧
================================================================
不太同意你的看法。不信,看以下代码,照样能通过啊
----------------------------------------------------
这个你把setTimeout( 'actionurl() ',1000);改成actionurl()看还行吗?
------解决方案--------------------
<script>
var start=5;
function actionurl()
{
if(start ==1)
{
document.all.message.innerText= '剩余 '+start+ '秒 ';
window.location= 'index.aspx ';
}
else
{
start=start-1;
document.all.message.innerText= '剩余 '+start+ '秒 ';
setTimeout( 'actionurl() ',1000);
}
}
setTimeout( 'actionurl() ',1000);
</script>
<body>
<form id= "form1 ">
<div>
<span id= "message "> </span>
</div>
</form>
</body>
---------------------------------