JavaScript moveElement函数的问题

yyang0514 2017-11-28 05:35:26
在JavaScript DOM编程中的moveElement函数代码,有如下问题:
1.repeat 字符串为什么要用“+”号,连接字符串的+号不是应该用在外面 如: ”字串1“+”字串2“
2."moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")" 函数中的单双引号不能明白。
其中elementID 要替换为"message",
"+final_x+" 要用替换为实际的位置变量,但是用了双引号后理论上应该就是final_x而不是实际数值。

请高手给讲解一下,有专题分析更好。谢谢!



源码如下

function moveElement(elementId,final_x,final_y,interval)
{
var elem=document.getElementById(elementId);
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 )
{
xpos++;
}
if(xpos > final_x )
{
xpos--;
}
if(ypos < final_y )
{
ypos++;
}
if(ypos > final_y )
{
ypos--;
}
elem.style.left=xpos+'px';
elem.style.top=ypos+'px';
var repeat="moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")";
movement=setTimeout(repeat,interval);
}
function positionMessage()
{
//初始化位置
var elem=document.getElementById("message");
elem.style.position="absolute";
elem.style.left="50px";
elem.style.top="50px";
moveElement("message",200,100,100);
}
...全文
148 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yyang0514 2017-11-29
找到一段很不错的解释。https://segmentfault.com/q/1010000004219901?_ea=1015941

var num =10;
        var repeat = "num";
        console.log(typeof repeat); // console string;
                                   //ok,问题来了,想要在字符串里打印出num的值怎么办?
        var repeat = ""+num+"";
        console.log(repeat)      //"10" "string";
        最后的部分是作为代码执行
        我们在控制台使用eval
        
        typeof eval(repeat)   //10   "number" 
        //ok, 这个能正常的作为数值运行
        
        接下来还有就是原题中的第一个参数 作为字符串的参数
        也就是说只要再加一个'' 就能普通的字符串解析运行了
        var mess  = "message";
        var repeat = "'"+mess+"'";
        typeof eval(repeat)  // "string"  "message"值能正常在代码中解析出来.
        
想要把一个字符串在JavaScript环境中解析其中的变量 例如"number"类型的 使用 ""+variable+""; "string" 类型的:使用 "'"+variable+"'"; (以上所谓的字符串均默认加了参数本身的字符串)
  • 打赏
  • 举报
回复
天际的海浪 2017-11-29
引用 4 楼 yyang0514 的回复:
[quote=引用 2 楼 jslang 的回复:] 你用的代码编辑器肯定没有语法颜色高亮吧

repeat="moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")";
看上面,蓝色部分才是字符串,elementId 和 final_x 都在字符串外面
谢谢你的回复。 我用的webstrom 是由颜色标记的。但是按照规则 只有双引号内的才是字符串内的才是字符串,还有字符串连接的时候加号也应该在外面,这个在里面。 彻底被搞糊涂了。[/quote] 有颜色标记怎么还不明白啊 +号和变量就是在字符串外面的,你可以拆分成多行看



"moveElement('"		//这是第1个字符串
+
elementId
+
"',"		//这是第2个字符串
+
final_x
+
","		//这是第2个字符串
+
final_y
+
","		//这是第3个字符串
+
interval
+
")"		//这是第2个字符串


  • 打赏
  • 举报
回复
yyang0514 2017-11-29
引用 2 楼 jslang 的回复:
你用的代码编辑器肯定没有语法颜色高亮吧

repeat="moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")";
看上面,蓝色部分才是字符串,elementId 和 final_x 都在字符串外面
谢谢你的回复。 我用的webstrom 是由颜色标记的。但是按照规则 只有双引号内的才是字符串内的才是字符串,还有字符串连接的时候加号也应该在外面,这个在里面。 彻底被搞糊涂了。
  • 打赏
  • 举报
回复
yyang0514 2017-11-29
引用 1 楼 showbo 的回复:
http://ask.csdn.net/questions/367104 Web开发学习资料推荐 Web前端开发框架 asp json类库解析json字符串
谢谢你的帮助。 请原谅,天资驽钝没看懂http://ask.csdn.net/questions/367104讲的内容
  • 打赏
  • 举报
回复
天际的海浪 2017-11-28
你用的代码编辑器肯定没有语法颜色高亮吧

repeat="moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")";
看上面,蓝色部分才是字符串,elementId 和 final_x 都在字符串外面
  • 打赏
  • 举报
回复
相关推荐
发帖
JavaScript
加入

8.5w+

社区成员

Web 开发 JavaScript
申请成为版主
帖子事件
创建了帖子
2017-11-28 05:35
社区公告
暂无公告