By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
438,384 Members | 1,829 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 438,384 IT Pros & Developers. It's quick & easy.

AJAX Loading Tab Doesn't Display

P: n/a
I would like have a little "loading..." tab not unlike the one that
gmail uses and I would like to display that tab while an ajax call is
made. The javascript to display the tab works. The javascript to hide
the tab works. But when I put the two together inside the function
that calls the ajax service, they don't work.

What seems to happen is that calls to change DOM object properties are
queued up, and then all executed simultaneously. That's what it looks
like anyway. Here is some example code:

<html>
<head>
<script language="Javascript">
function showLoading () {
document.getElementById("loading_tab").style.displ ay = "";
}
function hideLoading () {
document.getElementById("loading_tab").style.displ ay = "none";
}

function ajax () {
// show the loading tab
showLoading ();

// do cool ajax stuff (actual ajax code snipped)
// (this code is just to waste some cpu cycles)
for (var I = 0; I < 100000; I++) var X = new Date();

// hide the loading tab
hideLoading ();
}
</script>
</head>
<body onload="hideLoading()">
<div style="background-color:#f00" id="loading_tab">loading...</div>

<form>
<input type=button value="Show Loading Tab" onclick="showLoading()">
<input type=button value="Hide Loading Tab" onclick="hideLoading()">
<input type=button value="Run AJAX Service" onclick="ajax()">
</form>

</body>
</html>

Sep 30 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
ch****************@gmail.com wrote:
What seems to happen is that calls to change DOM object properties are
queued up, and then all executed simultaneously.


Some browsers, IE in particular, won't refresh the UI until a function
exits. So even though you're changing properties inside the function, these
are not shown until the whole function exits.

Instead, you need to look at setTimeout(). Run the first part to show the
tab, then use setTimeout() to run the second part in 10ms or something. The
first function will exit, and your changes will be shown. Then the second
will fire, etc.

--
Matt Kruse
http://www.JavascriptToolbox.com
http://www.AjaxToolbox.com
Sep 30 '05 #2

P: n/a
That fixes it. thanks.

Sep 30 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.