自学javascript,看的是[javascript_DOM编程艺术],有一个地方不太理解,决定到论坛向各位求助!var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
elem.movement = setTimeout(repeat,interval);就是这里,把moveElement函数以及相关参数变成字符串,再赋值到变量repeat,我不明白的地方如下:为什么要拆开转变成字符串?为什么不能如下直接转换,在最外面打上引号?var repeat = "moveElement('elementID',final_x,final_y,interval)";
————————————分割线——————————————另附上整个函数的代码,第一次提问,如果描述不清楚的地方请大家见谅,感谢各位坛友! function moveElement(elementID,final_x,final_y,interval){
if(!document.getElementById) return false;
if(!document.getElementById(elementID)) return false;
var elem = document.getElementById(elementID);
if(elem.movement){
clearTime(elem.movement);
}
if (!elem.style.left){
elem.style.left = 0px;
}
if(!elem.style.top){
elem.style.top = 0px;
}
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
if (xpos == final_x && ypos ==final_y){
return true;
}
if(xpos<final_x){
var dist = math.ceil((final_x-xpos)/10);
xpos = xpos + dist;
}
if(xpox>final_x){
var dist = math.ceil((final_x-xpos)/10);
xpos = xpos - dist;
}
if(ypos<final_y){
var dist = math.ceil((final_y-ypos)/10);
ypos = ypos+dist;
}
if(ypos>final_y){
var dist = math.ceil((final_y-ypos)/10);
ypos = ypos - dist;
}
elem.style.left = xpos+"px";
elem.style.top = ypos+"px";
var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
elem.movement = setTimeout(repeat,interval);
}
elem.movement = setTimeout(repeat,interval);就是这里,把moveElement函数以及相关参数变成字符串,再赋值到变量repeat,我不明白的地方如下:为什么要拆开转变成字符串?为什么不能如下直接转换,在最外面打上引号?var repeat = "moveElement('elementID',final_x,final_y,interval)";
————————————分割线——————————————另附上整个函数的代码,第一次提问,如果描述不清楚的地方请大家见谅,感谢各位坛友! function moveElement(elementID,final_x,final_y,interval){
if(!document.getElementById) return false;
if(!document.getElementById(elementID)) return false;
var elem = document.getElementById(elementID);
if(elem.movement){
clearTime(elem.movement);
}
if (!elem.style.left){
elem.style.left = 0px;
}
if(!elem.style.top){
elem.style.top = 0px;
}
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
if (xpos == final_x && ypos ==final_y){
return true;
}
if(xpos<final_x){
var dist = math.ceil((final_x-xpos)/10);
xpos = xpos + dist;
}
if(xpox>final_x){
var dist = math.ceil((final_x-xpos)/10);
xpos = xpos - dist;
}
if(ypos<final_y){
var dist = math.ceil((final_y-ypos)/10);
ypos = ypos+dist;
}
if(ypos>final_y){
var dist = math.ceil((final_y-ypos)/10);
ypos = ypos - dist;
}
elem.style.left = xpos+"px";
elem.style.top = ypos+"px";
var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
elem.movement = setTimeout(repeat,interval);
}
解决方案 »
- EXTJS树的显示问题,节点之间缝隙过大
- firefox下ckeditor的问题,无法选中控件
- web开发的程序进行自动化测试使用什么测试工具较好
- 求一个关于百度实现搜索的javascript代码问题(急!)
- JS里变量和字符的连接.
- 在document.body.innerHTML中 加入<input id=\"Button1\" type=\"button\" value=\"在线\" onclick=\"alert(\"aa\");\" />,点击时为何提示缺少对象?
- 谁帮忙把这3个方法放到一起
- backbone 2个model,2个view的事件触发问题?
- (高手必进)页面框架,右边页面是搜索条件输入,左边是搜索结果。怎么做???
- 一个简单的问题!地址栏的地址!
- 请教js实现的功能 谢谢
- 本人用jQuery写的一个验证插件,希望高手们给点意见顺便散分
var repeat = "moveElement('elementID',final_x,final_y,interval)";
解释:
1、定义一个变量repeat ,将moveElement()函数的返回值赋值给变量repeat
2、你这样写的意思是:
moveElement('elementID',final_x,final_y,interval)
'elementID'变成了一个没有意义的字符串。3、原函数解释:注意,蓝字表示的是传入给函数moveElement的一个参数,表示的是某个元素的ID。这个元素ID是不固定的 function moveElement(elementID,final_x,final_y,interval){
if(!document.getElementById) return false;
if(!document.getElementById(elementID)) return false;
var elem = document.getElementById(elementID);
if(elem.movement){
clearTime(elem.movement);
}
if (!elem.style.left){
elem.style.left = 0px;
}
if(!elem.style.top){
elem.style.top = 0px;
}
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
if (xpos == final_x && ypos ==final_y){
return true;
}
if(xpos<final_x){
var dist = math.ceil((final_x-xpos)/10);
xpos = xpos + dist;
}
if(xpox>final_x){
var dist = math.ceil((final_x-xpos)/10);
xpos = xpos - dist;
}
if(ypos<final_y){
var dist = math.ceil((final_y-ypos)/10);
ypos = ypos+dist;
}
if(ypos>final_y){
var dist = math.ceil((final_y-ypos)/10);
ypos = ypos - dist;
}
elem.style.left = xpos+"px";
elem.style.top = ypos+"px";
var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
elem.movement = setTimeout(repeat,interval);
}
<script>
//给三个变量赋值
var s1="Hello";
var s2="yjw00x";
var s3="How are you";
alert(HandleString(s1,s2,s3));//组合结果:Hello|yjw00x|How are you?function HandleString(a1,a2,a3){//将赋值后的变量作为参数传入“HandleString()”函数,进行字串处理
var tempStr="";//定义一个中间变量
tempStr="组合结果:"+a1+"|"+a2+"|"+a3;//将三个参数连接起来
return tempStr;//将被赋值的中间变量作为函数返回值返回
}
var b1="呵呵,";
var b2="哈哈.";
var b3="学习苦啊!";
alert(HandleString(b1,b2,b3));//你的组合结果:a1|a2|学习苦啊!
function YourHandleString('a1','a2',a3){//红字参数变成固定的字串
var tempStr="";//定义一个中间变量
tempStr="你的组合结果:"+a1+"|"+a2+"|"+a3;//将三个参数连接起来
return tempStr;//将被赋值的中间变量作为函数返回值返回
}
</script>你
alert(HandleString(b1,b2,b3));//你的组合结果:a1|a2|学习苦啊!
------------>
alert(YourHandleString(b1,b2,b3));//你的组合结果:a1|a2|学习苦啊!
------------>
alert(YourHandleString(b1,b2,b3));//你的组合结果:a1|a2|学习苦啊!