顯示廣告
隱藏 ✕
看板 Programming
作者 layzer (雷阿哲)
標題 [JavaScript] getElementById
時間 2011年05月04日 Wed. PM 01:42:46


getElementById到底要怎樣才吃的到變數....
我這樣寫是吃不到的
function catchResult(這是變數){
	
if (xmlHttp.readyState==4){
	
	
s=xmlHttp.responseText;
	
	
var obj=document.getElementById(這是變數);
	
	
if(xmlHttp.status==200){
	
	
	
obj.innerHTML=s;
	
	
}
	
}
}

可是照書上這樣寫就可以
function loadContent(div,url){
//blahblah....
	
xmlhttp.open('GET',url,true);
	
xmlhttp.onreadystatechange = function(){
	
	
if(xmlhttp.readyState==4){
	
	
	
if(xmlhttp.status==200){
	
	
	
	
var obj = document.getElementById(div);
	
	
	
	
if(xmlhttp.responseText!=''){
	
	
	
	
	
obj.innerHTML=xmlhttp.responseText;
	
	
	
	
}
	
	
	
}else{
	
	
	
	
alert(xmlhttp.status);
	
	
	
}
	
	
}
	
};
	
xmlhttp.send(null);
}
}

雖然我朋友跟我說 都2011年了 該用querySelector....
可是相容性從IE8起跳真是十分驚嚇....

到底要怎樣才能讓他吃的到變數啊....orz
不然每個不同的區塊都要寫一次....看了就很煩

--
※ 作者: layzer 時間: 2011-05-04 13:42:46 來自: 140.121.110.139
※ 編輯: layzer 時間: 2011-05-04 13:43:27 來自: 140.121.110.139
※ 同主題文章:
※ 看板: Programming 文章推薦值: 1 目前人氣: 0 累積人氣: 1089 
1樓 時間: 2011-05-04 13:53:23 (台灣)
  05-04 13:53 TW
用selector+1
2樓 時間: 2011-05-04 13:57:37 (台灣)
  05-04 13:57 TW
教室電腦只支援IE7....(默)
3樓 時間: 2011-05-04 14:00:42 (台灣)
  05-04 14:00 TW
其實我不是很了解啦.......這學期有一門課本來應該講到這個
結果老師完全不教 想要同學自己錄powercam給其他組的看 誰要看阿................
4樓 時間: 2011-05-04 14:01:16 (台灣)
  05-04 14:01 TW
總之ID是ID 變數是變數 應該是不一樣的東西
就..我正在學習AJAX基礎中 (圖書館jquery的書都被借走了QQ)
就照著書上刻code上去 而且沒有光碟只能全部手打....
原先是
function catchResult(){
    if (xmlHttp.readyState==4){
        s=xmlHttp.responseText;
        var obj=document.getElementById('divID');
        if(xmlHttp.status==200){
            obj.innerHTML=s;
        }
    }
}
一看就問題很大....如果一頁你有10個區塊要做 那你就要寫10段同樣的東西然後只改個getElementById('divIDxx')這樣 所以想說弄個function出來這樣搞 結果我竟然只有丟變數的時候會把getElementByID打成大寫....就這樣GG了....orz

咦?回應不能用code....

5樓 時間: 2011-05-04 14:09:45 (台灣)
  05-04 14:09 TW
囧 看來只有預覽的時候看不到
6樓 時間: 2011-05-04 14:37:32 (台灣)
  05-04 14:37 TW
結果是因為ID打成大寫的關係嗎 XD  發生這種問題時可以在那一行前後加上 alert(變數) 看看變數是否還在 再來判斷可能的問題
寫一寫發現好像不是這問題....有輸出變數看過 可是完全看不出個所以然orz
function sendRequest(){
	var form = document.login;
	createXHR();
	var url='login-ajax.php?ts='+new Date().getTime();
	xmlhttp.open('POST',url,true);
	xmlhttp.onreadystatechange = catchResult;
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(getFormValue(form));
}
function catchResult(){
	if (xmlHttp.readyState==4){
		s=xmlHttp.responseText;
		var obj=document.getElementById('main-login');
		if(xmlHttp.status==200){
			obj.innerHTML=s;
		}
	}
}
可以正常跑
function sendRequest(div,url,FormID){
	url+='&ts='+new Date().getTime();
	createXHR();
	xmlhttp.open('POST',url,true);
	xmlhttp.onreadystatechange = catchResult(div);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlhttp.send(getFormValue(document.getElementById(FormID)));
}
function catchResult(div){
	if (xmlhttp.readyState==4){
		s=xmlhttp.responseText;
		var obj=document.getElementById(div);
		if(xmlHttp.status==200){
			obj.innerHTML=s;
		}
	}
}
就不行....
7樓 時間: 2011-05-04 15:38:21 (台灣)
  05-04 15:38 TW
xmlhttp.onreadystatechange = catchResult(div) ← function不能這樣呼叫吧 XD
改成 xmlhttp.onreadystatechange = function(){ catchResult(div); } 應該就可以了
catchResult(div)可以用..
只是丟出去之後跑不到innerHTML....所以要按F5更新
8樓 時間: 2011-05-04 16:01:06 (台灣)
  05-04 16:01 TW
那我說的方法你有試過嗎... 
你這問題可以參考PTT AJAX板的 [問題] Javascrip onClick參數 討論串
你說的方法我試過囉 結果一樣orz

又重試了一次 結果可以....到底是怎樣(翻桌)

9樓 時間: 2011-05-04 16:21:33 (台灣)
  05-04 16:21 TW
可以了後 = =
可以了 感謝<(_ _)>
所以現在要研究為什麼這段跑不起來....

30秒找到問題所在...orz

r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇