亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于DOM編程藝術里的moveElement加單引號的問題

function?positionMessage(){
	var?elem=document.getElementById("message");
	elem.style.position="absolute";
	elem.style.top="100px";
	elem.style.left="50px";
	moveElement("message",200,100,10);
	//?movement=setTimeout("moveMessage()",5000);//movement在這里是全局變量,因此可以在函數以外的地方被取消
}
addLoadEvent(positionMessage);

function?moveElement(elemID,final_x,final_y,interval){
	//elemID傳入為?"message"
	//傳入時已經帶有冒號,因此不能再傳入冒號,否則無法獲取元素ID的值
	var?elem=document.getElementById(elemID);
	
	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('"?+?elemID?+?"',"?+?final_x?+?","?+?final_y?+?","?+?interval?+?")";
	movement=setTimeout(repeat,interval);//遞歸
}

我想問的是 ?為什么在第一次調用moveElement時參數elemID不需要帶引號,而通過遞歸再次調用moveElement時elemID要加上引號了(即repeat中的單引號)。

我從網上已經查了,基本已經明白了加引號的目的是moveElement中的setTimeout的第一個參數必須是字符串。

但是我覺得有一個沖突是:

第一次調用moveElement時,傳入的實參時帶引號的message,即"message".所以在var elem=document.getElementById(elemID);這里,elemID不用加引號。之前代碼一直不對就是這里加了引號導致效果顯示不出來。

那既然傳入的實參已經加了引號,那為什么再次調用moveElement時卻要給elemID加一個單引號呢


正在回答

1 回答

第一次傳入的實參是字符串,即 "message", 再次調用 var?repeat="moveElement('"?+?elemID?+?"',"?+?final_x?+?","?+?final_y?+?","?+?interval?+?")"; 里面?elemID 是一個對象,添加加引號,才會變為字符串

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
JavaScript進階篇
  • 參與學習       468832    人
  • 解答問題       22582    個

本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界

進入課程

關于DOM編程藝術里的moveElement加單引號的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號