Hallo XodoX,
<script type="text/javascript">
function rand(min,max)
{
var wert = min + Math.ceil(Math.random() * 1000) % (max-min) + 1;
return wert;
}
Zunächst mal: Diese Implementierung ist nicht sehr elegant, sie funktioniert ja nur halbwegs, wenn (max-min) << 1000 ist.
Wenn (max - min) kein Teiler von 1000 ist, treten ja nicht alle Reste gleich häufig auf. Bei kleinen Zahlen wirkt sich das nicht so aus, aber wenn man Beispielsweise (max - min) == 400 hat, so kommen die Reste 0 bis 199  ja 3 und die anderen 2 mal auf.
Besser ist sowas:
[code lang=javascript]
function randInt(min, max) {
  return Math.ceil(min + Math.random() * (max - min));
}
  
> function asb\_loadingEnd()  
> {  
>  document.getElementById("asb\_loading").innerHTML='normal';  
> }  
>   
> function loadData()  
> {  
>  document.getElementById("asb\_loading")  
>  setTimeout('asb\_loadingEnd();',rand(5,35)\*100);  
> }  
  
> Wie erreiche ich das am elegantesten?  
Zunächst mal musst Du das gewünschte Verhalten unabhängig vom konkreten Objekt formulieren:  
~~~javascript
  
function setLoading(elem) {  
  elem.innerHTML = 'normal';  
  setTimeout(function() {setNormal(elem)}, randInt(1000, 30000));  
}  
  
function setNormal(elem) {  
  elem.innerHTML='<img src=\"loading.gif\">';  
  setTimeout(function(setLoading(elem)) {}, randInt(1000, 30000));  
}  
Dann musst Du das nur noch für jedes Element anstoßen:
  
window.onload = function() {  
  var ids = new Array("foo", "bar", "baz");  
  for (var i = 0; i < ids.length; ++i) {  
    setNormal(document.getElementById(ids[i]));  
  }  
};  
Das ist alles ungetestet, kann also noch ein paar Flüchtigkeitsfehler enthalten.
Grüße
Daniel
 nicht angemeldet
 nicht angemeldet