Stop and Go?

SkYyY

Grünschnabel
Hallo alle zusammen,

wie kann man ein Stop and Go machen?

Damit meine ich, dass das Script auf einer HTML Seite z.B. als 1. ausgibt: Bitte warten. Als 2. soll er nach 2 Sekunden ausgeben: Ihr Vorgang wird bearbeitet. Und als 3. soll er wieder nach 2 Sekunden mit dem Aufbau der Seite fortfahren.

Das ist sicherlich machbar. Aber wie? Meine einzige Idee dazu wäre es, mit einem TimeOut zu versuchen, hier schonmal der Code:

PHP:
<?php


echo '<script type="text/javascript">
var bearbeitung = window.setInterval("Work()", 1000);
var i = 0, arbeit = 1;
function Work () {
  if (arbeit == 1) {
    document.write("Bitte warten.");
    arbeit = 2;
  }
  else {
    document.write("Ihr Vorgang wird bearbeitet.)";
    $arbeit = 1;
  }
  i = i + 1;
  if (i >= 2)
    window.clearInterval(bearbeitung);
}
</script>';

?>

Nach einer Sekunde kommt dann bitte warten. Aber "Ihr Vorgang wird bearbeitet." kommt nicht?! Was ist da falsch? Könnte das freundlicherweise jemand Fehlerlesen?

MfG, SkYyY
 
Zuletzt bearbeitet:
Hallo,

write() bewirkt, wie hier schon oft nachzulesen, nach dem Laden der Seite ausgeführt, ein Überschreiben des kompletten Seiteninhalts....auch der Skript-Code wird überschrieben.

Nach dem Laden der Seite ändere bspw. das innerHTML eines Elementes, dann bleibt der Rest erhalten.

Hier ein diesbetreffender Vorschlag:
Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
msgs=[];

msgs['msg1']=[
              ['nachricht1',2],
              ['nachricht2',5],
              ['nachricht3',2]
             ];
              
msgs['msg2']=[
              ['meldung1',1],
              ['meldung2',2],
              ['meldung3']
             ];

function loop_msgs(kMsg,nr)
{
  
  if(loop_msgs.arguments.length==1)
    {
      nr=0;
      document.write('<span id="' + kMsg + '">'+msgs[kMsg][nr][0]+'</span>');
    }
  else
    {
      obj=document.getElementById(kMsg);
      obj.innerHTML=msgs[kMsg][nr][0];
    }
  next=nr+1;
  if(msgs[kMsg].length<=next)next=0;
  if(msgs[kMsg][nr].length==2)
    {
      setTimeout("loop_msgs('"+kMsg+"',"+next+")",msgs[kMsg][nr][1]*1000);
    }
}
//-->
</script>
</head>
<body>
<script type="text/javascript">
<!--
loop_msgs('msg1');
//-->
</script>
<br>
<script type="text/javascript">
<!--
loop_msgs('msg2');
//-->
</script>
</body>
</html>

Du kannst damit mehrere dieser Texte erzeugen, hinterlegt werden sie im Array msgs
Jedes Päckchen besteht aus 2 Werten....dem Text und dessen Anzeigedauer(in Sek).
Wenn du beim letzten "Päckchen" eines Arrays keine Anzeigedauer notierst(wie im Bsp. bei msg2), stoppt es dort, andernfalls geht es beim ersten Text von vorne los(wie im Bsp. bei msg1).


Ich hoffe, das hilft dir weiter ;)
 
Super ;)

was muss ich tun, damit mit dem Aufbau der Seite fortgefahren wird, also wenn beide msgs gestoppt sind, dass die Seite dann den restlichen Kram aufbaut?
 
Verstanden schon, nur nicht kapiert :-)

Wozu willst du den Seitenaufbau hinauszögern und stattdessen den User auf die Folter spannen:confused:
 

Neue Beiträge

Zurück