Da ist etwas, das ich nicht ganz verstehe. Diesmal habe ich einen Code gesehen, der das Problem sehr gut erklärt:
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);
......
var repeat = "moveElement('"+ elementID +"',"+ final_x +","+ final_y +","+ interval +")";
movement = setTimeout(repeat, interval)
}
Ich habe nur eine Frage:
var repeat = "moveElement('"+ elementID +"',"+ final_x +","+ final_y +","+ interval +")";
In diesem Absatz elementID
,final_x
,final_y
,interval
werden die vier Parameter übergeben. Mit Ausnahme des ersten, der eine Zeichenfolge ist, sind die letzten drei alle Zahlen.
Das erste, was ich nicht verstehe, ist, warum diese Parameter in Anführungszeichen eingeschlossen werden müssen. Das zweite, was ich nicht verstehe, ist, was das Pluszeichen hier bewirkt. Eine andere Frage ist, warum diese Zeichenfolge wie elementID
in doppelte Anführungszeichen gesetzt wird. Unter welchen Umständen ist dies notwendig?
Im Allgemeinen denke ich, dass das Pluszeichen zum Zusammenfügen von Zeichenfolgen geeignet ist, aber das ist hier offensichtlich nicht der Fall. Ein Paar Anführungszeichen ist ein unabhängiges Leerzeichen.
1.引号包住的是逗号
2.123456+"somestring"→"123456somestring"
3.elementId是String型参数所以加引号
变量最后转为字符串啊!数字+引号 变字符穿 如果你需要的参数是字符串而不是数字
这里的字符串在setTimeout里相当于eval的用法,是指你想要在delay毫秒之后执行的代码字符串
首先,这里的加号的确是用来字符串拼接
的结果就是
只是,将这个名叫repeat的字符串变量作为参数传给了setTimeout, 即在interval毫秒后,执行repeat
这里其实基本等同于
这样应该比较好理解吧?
但是这两种方式还是有区别,一般不大推荐题主说的这种方式,具体可见window.setTimeout、Running string as function in javascript setTimeout?