PDA

View Full Version : مشکل با تغییر visibility - display



plague
پنج شنبه 12 خرداد 1390, 00:06 صبح
سلام من یه صفحه دارم که محتویاتش با ajax لود میشه
میخام بدونه عکس لودینگ بزارم تا زمانی که تا زمانی که محتویات گرفته بشن نمایش داده بشه
این div که عکس لودینگ داخلشه


<div id="loading"><img src="images/loadinfo.net.gif" width="48" height="48" /></div>
اینم کد css اون :


#content #loading {
position: fixed;
width: 48px;
top: 0px;
display:none;
}




حالا خط اول اون فانکشن ایجکس که محتویات صفحه رو لود میکنه دستور دادم که اون div #loading رو نمایش بده
و در خط آخر فانکشن هم دوباره گفتم که اون رو مخفی کنه



function ajaxpage(url, containerid){

document.getElementById('loading').style.display = 'block';

///////////////////////////////
بقیه کد ایجکس //////////
/////////////////////////
var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadedobjects=""
var rootdomain="http://"+window.location.hostname
var bustcacheparameter=""

var page_request = false
if (window.XMLHttpRequest) // if Mozilla, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
page_request.onreadystatechange=function(){
loadpage(page_request, containerid)
}
if (bustcachevar) //if bust caching of external page
bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
page_request.open('GET', url+bustcacheparameter, true)
page_request.send(null)
}

function loadpage(page_request, containerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(containerid).innerHTML=pag e_request.responseText


}

function loadobjs(){
if (!document.getElementById)
return
for (i=0; i<arguments.length; i++){
var file=arguments[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
/////////////////////////
///پایان کد ایجکس //////
//////////////////////////

document.getElementById('loading').style.display = 'none';
}



حالا مشکل من اینه که فقط برای یه لینک این جواب میده و اگه برای بار دوم روی لینکی کلیک تا محتویات وسط صفحه لود بشه نه تنها اون عکسه نشون داده نمیشه بلکه کد اصلا عمل نمیکنه و صفحه لود هم نمیشه !
این اررور رو میده :
Message: Object required
Line: 22
Char: 1
Code: 0

که این خط همون خط اول فانکشنه :
document.getElementById('loading').style.display = 'block';';


مشکل از چیه ؟
من صفحات رو ایطوری لینک کردم


<a href="#" onclick="javascript:ajaxpage('page.php', 'content'); return false;">page </a>

hossin.esm
پنج شنبه 12 خرداد 1390, 11:48 صبح
سلام
مشکل اینجاست که لودینگ شما در content وجود داره و شما با ajax محتویات content را پر میکنید و المنت های قبلی از بین میره مثل لودینگ برای رفع مشکل هم میتونید لودینگ را خارج از content قرار بدید
یا هر بار که از ajax استفاده میکنید در اول لودینگ را به content اضافه و در اخر از content حذف کنید.
امیدوارم خوب توضیح داده باشم.

plague
پنج شنبه 12 خرداد 1390, 16:24 عصر
ممنون متوجه شدم
از عوارض دیروقت کارکردن وبیخوابی بود