Alex: Javascript mehrmals gleichzeitig aufrufen

Beitrag lesen

Hallo,

ich habe ein kleines Problem, bei dem es mir an einer Idee fehlt.
Ich habe heute ein kleines Skript programmiert, dass Text „schreibmaschinen-ähnlich” in <span>s schreibt.

Auf der Webseite sieht das so aus: Beim anklicken eines Wortes (im Text) tauchen hinter diesem („schreibmaschinen-ähnlich”) mehrer Links auf.

Mit einem Link funktioniert mein Skript super, mit mehrern sieht es nicht mehr so gut aus.

Die Idee ist folgende:

--- HTML:

<span> Text </span>

<span style="cursor:pointer; cursor:hand;" onClick="

startel(1,'Flickr,','http://flickr.com/photos/a74Ri'); schreibel();
startel(2,'Delicious,','http://del.icio.us/Atari82'); schreibel();

">goto links </span>

<span id="1"></span>
<span id="2"></span>

--- JAVASCRIPT:

function startel(id,text,link) {

tmr=null;
 pos=1;
 lnk=link;
 txt=text;
 globalid=id;

}

function schreibel() {
  if(!tmr) tmr = window.setInterval("schreibel()", 50);
  teilText = txt.substr(0,pos);
  document.getElementById(globalid).innerHTML="<a target='_blank' href='" +lnk+ "'>" +teilText+ "</a>";
  if (pos >= txt.length) {

window.clearInterval(tmr);
  }
  pos++;
}

---

Wie man sicherlich gleich sieht wird beim Aufruf der erste Link „initialisiert“ (startl) und dann sein Skript gestartet (schreibel).

Sofort danach wird der zweite Link initialisiert und gestartet, was das Skript, welches ja absichtlich mit einer Verzögerung arbeitet durcheinander bringt.

Die Ideale Lösung wäre die, dass das der zweite Link wartet bis der erste fertig ist.

Aber ich hab keine Ahnung wie???

Meine bisher einzigste gute? Idee hat leider NICHT funktioniert:

---

go=1;

function startel(id,text,link) {

while (go=0){
        }

go=0;
 tmr=null;
 pos=1;
 lnk=link;
 txt=text;
 globalid=id;

}

function schreibel() {
  if(!tmr) tmr = window.setInterval("schreibel()", 50);
  teilText = txt.substr(0,pos);
  document.getElementById(globalid).innerHTML="<a target='_blank' href='" +lnk+ "'>" +teilText+ "</a>";
  if (pos >= txt.length) {
    go=1;
    window.clearInterval(tmr);
  }
  pos++;
}

---

DANKE!