这段javascript代码为什么把他们放在window.onload 函数里边反而运用不了,一直提示moveElement未定义

这段javascript代码为什么把他们放在window.onload 函数里边反而运用不了,一直提示moveElement未定义,第1张

这是因为当把moveElement函数放入windowonload后,作用域就变了,变成局部变量了,而setTimeout是运行于全局的(即使它是从windowonload内启动的),对于windowonload内部的moveElement它就看不见了,就认为是未定义的了。

可以这样改一下:

var moveElement;  //把moveElement先声明为全局变量

windowonload=function(){

   moveElement=function(elementID,final_x,final_y,interval){

      var elem=documentgetElementById(elementID);

      var xpos=parseInt(elemstyleleft);

      var ypos=parseInt(elemstyletop);

      if(xpos==final_x&&ypos==final_y)return true;

      if(xpos<final_x)xpos++;

      if(xpos>final_x)xpos--;

      if(ypos<final_y)ypos++;

      if(ypos>final_y)ypos--;

      elemstyleleft=xpos+"px";

      elemstyletop=ypos+"px";

      var repeat="moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";

      setTimeout(repeat,interval);

   }

   moveElement("message",200,100,10);

}

或者这样也行:

var moveElement=function(elementID,final_x,final_y,interval){

   var elem=documentgetElementById(elementID);

   var xpos=parseInt(elemstyleleft);

   var ypos=parseInt(elemstyletop);

   if(xpos==final_x&&ypos==final_y)return true;

   if(xpos<final_x)xpos++;

   if(xpos>final_x)xpos--;

   if(ypos<final_y)ypos++;

   if(ypos>final_y)ypos--;

   elemstyleleft=xpos+"px";

   elemstyletop=ypos+"px";

   var repeat="moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";

   setTimeout(repeat,interval);

};  //在windowonload外面声明moveElement函数

windowonload=function(){

   moveElement("message",200,100,10);

}

建议用第二种

完整代码:

<html xmlns="http://wwww3org/1999/xhtml">

<head>

<title></title>

<script type="text/javascript">

function ttt(obj) {

setTimeout("documentgetElementById('" + objid + "')value='点击过了';", 1000)

}

</script>

</head>

<body>

<input type="submit" name="button" id="butt00" value="提交" onclick="ttt(this)" />

</body>

</html>

语法结构:

function

函数名(参数列表){

函数体;

return

返回值

}

注意事项:

1、函数名不能以数字开头,要符合js的命名规范

2、参数列表只需指明参数个数,无需指定类型,因为js是弱类型

3、如果有返回值,写return,如果没有,不写return即可

例如:

//例1:定义无参无返回值函数

function myfun(){

alert("这是一个无参无返回值的函数");

}//例2:定义有参无返回值函数

function myfun2(name,age){

alert("姓名:"+name+"\n年龄:"+age);

}//例3:定义有参有返回值函数

function myfun3(one,two){

return one+two;

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11672215.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存