这是因为当把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;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)