喜 我有一个网页,它使用ajax从另一个页面检索数据,同时这样做我想在页面中显示一个加载gif,所以我用它的gif创建一个div。
<div id="loading"><img src="images/loadinfo.net.gif" width="48" height="48" /></div>
这是我的css代码:
#content #loading {
visibility:hidden;
position: fixed;
width: 48px;
top: 0px;
}
现在我认为我需要做的就是在我的加载内容ajax函数的开头设置加载div的可见性为'visible',然后在最后使其再次隐藏 但它不工作奇怪的是,如果我创建加载div可见,然后将其隐藏在ajax函数的开头它工作正常!!!
这是我的功能:
function ajaxpage(url, containerid) {
document.getElementById('loading').style.visibility = 'visible';
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 = page_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.visibility = 'hidden';
}
答案 0 :(得分:31)
function loadpage (page_request, containerid)
{
var loading = document.getElementById ( "loading" ) ;
// when connecting to server
if ( page_request.readyState == 1 )
loading.style.visibility = "visible" ;
// when loaded successfully
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
{
document.getElementById(containerid).innerHTML=page_request.responseText ;
loading.style.visibility = "hidden" ;
}
}
答案 1 :(得分:2)
如果您只想在收到回复时将其显示,请将其添加到您的loadpage()
function loadpage(page_request, containerid){
if (page_request.readyState == 4 && page_request.status==200) {
var container = document.getElementById(containerid);
container.innerHTML=page_request.responseText;
container.style.visibility = 'visible';
// or
container.style.display = 'block';
}
但这完全取决于你如何在第一时间隐藏div
答案 2 :(得分:1)
使用显示而不是可见性。 display:none表示不可见,没有可见设置。