Borbarad: Counter mehrfachverwenden

Ich habe folgendes Counterscript gerade eben noch geschafft zu schreiben:

function tflotte()
{
 v=new Date();
 var bxx=document.getElementById('bxx');
 n=new Date();
 ss=pp;
 s=ss-Math.round((n.getTime()-v.getTime())/1000.);
 m=0;h=0;
 if(s<0)
 {
  bxx.innerHTML="Abgeschlossen<br>"
 }
 else
 {
  if(s>59)
  {
   m=Math.floor(s/60);
   s=s-m*60
  }
  if(m>59)
  {
   h=Math.floor(m/60);
   m=m-h*60
  }
  if(s<10)
  {
   s="0"+s
  }
  if(m<10)
  {
   m="0"+m
  }
  bxx.innerHTML=h+":"+m+":"+s+"<br>
 }
       pp=pp-1;
       window.setTimeout("tflotte();",999);
}

Dieses wird wie folgt in HTML eingebunden:
<div id="bxx" class="z" style="font-size:0.8em;text-align:center;color:#FFFFFF"></div>
<SCRIPT language=JavaScript>
pp="<?=$flotteninfos[flugdauer]?>";
abbr="flotte_abbrechen";
okay="fertig";
planetenid="<?=$planetenid?>";
tflotte(<?=$i?>);
</script>

Dieser HTML Bereich wird $x mal aufgerufen,
somit habe ich nun überlegt da die Variable $i
eh die Zählervariable isr, diese der funktion tflotte mitzugeben.

das bedeutet jedoch auch das ich oben aus:
<div id="bxx" class="z" ...
<div id="bxx<?=$i?>" class="z" ...
machen muß was soweit auch kein Problem ist.

Nur wie setze ich das im Javascript gleichzeitig um,
mit dem Versuch:

function tflotte()
{
 v=new Date();
 var bxx+i=document.getElementById('bxx+i');
 n=new Date();
 ss=pp;
 s=ss-Math.round((n.getTime()-v.getTime())/1000.);
 m=0;h=0;
 if(s<0)
 {
  bxx+i.innerHTML="Abgeschlossen<br>"
 }
 else
 {
  if(s>59)
  {
   m=Math.floor(s/60);
   s=s-m*60
  }
  if(m>59)
  {
   h=Math.floor(m/60);
   m=m-h*60
  }
  if(s<10)
  {
   s="0"+s
  }
  if(m<10)
  {
   m="0"+m
  }
  bxx+i.innerHTML=h+":"+m+":"+s+"<br>
 }
       pp=pp-1;
       window.setTimeout("tflotte(i);",999);
}

schlug leider alles fehl.

Danke für die HILFE.

  1. Niemand eine Idee?

    1. Grütze .. äh ... Grüße!

      Niemand eine Idee?

      Doch. Aber wer schon nach knapp über einer Stunde quengelt, wird nicht unbedingt bedient.


      Kai

      --
      Der vertuschte Gefahrstoff: Dihydrogenmonoxid
      ie:{ fl:( br:< va:) ls:? fo:| rl:? n4:° ss:{ de:] js:| ch:? mo:| zu:|
      1. Naja wirkte eher wie der Thread verschwindet auf niemmerwiedersehen.

        sorry

  2. Hallo!

    Huiuiuiii... :) warscheinlich ist der Grund, dass du noch keine Antwort erhalten hast, dass man auch nach öfterem Lesen dein Problem kaum versteht. Das ist echt eine harte Nuss. Könntest du dein Script vielleicht kommentieren und den Variablen eindeutige Namen vergeben? Dann würde es (zumindest mir) leichter fallen, genau zu verstehen was das Script macht und vorallem was du genau willst.

    Ich habe folgendes Counterscript gerade eben noch geschafft zu schreiben:

    function tflotte()
    {
    v=new Date();
    var bxx=document.getElementById('bxx'); // einmal mit 'var', einmal ohne ;)
    n=new Date();
    ss=pp; // Hier wären gute Namen besser - außerdem gibt es 'pp' doch gar nicht
    s=ss-Math.round((n.getTime()-v.getTime())/1000.); // dito
    m=0;h=0;
    if(s<0)
    {
      bxx.innerHTML="Abgeschlossen<br>"
    }
    else
    {
      if(s>59)
      {
       m=Math.floor(s/60);
       s=s-m*60
      }
      if(m>59)
      {
       h=Math.floor(m/60);
       m=m-h*60
      }
      if(s<10)
      {
       s="0"+s
      }
      if(m<10)
      {
       m="0"+m
      }
      bxx.innerHTML=h+":"+m+":"+s+"<br>
    }
           pp=pp-1;
           window.setTimeout("tflotte();",999);
    }

    Dieses wird wie folgt in HTML eingebunden:
    <div id="bxx" class="z" style="font-size:0.8em;text-align:center;color:#FFFFFF"></div>
    <SCRIPT language=JavaScript>        // schmeiß das 'language' raus und schreib 'type'
    pp="<?=$flotteninfos[flugdauer]?>"; //was gibt das? (aah, die Variable 'pp' :-))
    abbr="flotte_abbrechen";            //gehe ich recht in der Annahme, dass die
    okay="fertig";                      //nächsten Zeilen keine Bedeutung für das
    planetenid="<?=$planetenid?>";      // Problem-Script haben?
    tflotte(<?=$i?>);
    </script>

    Was für Werte bekommt JavaScript von PHP? PHP ist bei clientseitigen Dingen schnurzpiep. Nur der Code der beim Client ankommt interessiert uns.

    Dieser HTML Bereich wird $x mal aufgerufen,
    somit habe ich nun überlegt da die Variable $i
    eh die Zählervariable isr, diese der funktion tflotte mitzugeben.

    Dieser Satz kann leider nicht zu meiner Erhellung beitragen. Meinst du, dass du der Funktion den Wert der Variable $i als Parameter übergeben willst? Wenn ja: Du nimmst die Variable doch in deinem Quelltext gar nicht an...

    das bedeutet jedoch auch das ich oben aus:
    <div id="bxx" class="z" ...
    <div id="bxx<?=$i?>" class="z" ...
    machen muß was soweit auch kein Problem ist.

    Bist du sicher, dass du das so meinst wie du es geschrieben hast? Oder meinst du nicht viel eher <?echo $i;?> (das gilt übrigens auch für oben).

    function tflotte()
    {
    [...]
    }

    schlug leider alles fehl.

    Ich bin mir nicht so ganz sicher was du willst... Aber bei folgendem liegt der (bzw. mindestens einer der) Fehler:

      
    var bxx+i = document.getElementById('bxx+i');  
    //    ^^^                               ^^^  
    //     |                             Hier muss es heißen: ('bxx' + i)  
    //     |  
    //     |  
    //   Geht das? Ich denke nicht. Ich habe schon länger nicht mehr mit  
    //   JS gearbeitet und bin nach 2 ½ Stunden Training nicht mehr in  
    //   der Lage einen klaren Kopf zu fassen. Ich schaue es mir morgen  
    //   Abend nochmal an. Davor habe ich leider keine Zeit.  
    
    

    Danke für die HILFE.

    Bitte. Ich mache das echt gern, wenn der Fragende sich auch Mühe gibt und zurück schreibt. Ich werde dir erst morgen Abend wieder antworten können. Vielleicht erbarmt sich ja ein anderer :) sonst schauen wir morgen Abend mal weiter.

    ciao, Lukas

    --
    Nach einem Korrspondentenbericht der New York Times aus der umkämpften Stadt, wurden zur „Ausschaltung eines einzigen feindlichen Scharfschützen mehrere 500-Pfund-Bomben, 35 Artilleriegranaten des Kalibers 255, zehn Schüsse aus der Abrams-Panzerkanone sowie 30 000 Patronen leichter Munition benötigt”. „Die Gebäude waren daraufhin Ruinen”, schreibt die New York Times, „aber der Scharfschütze schoss weiter...”
    1. Ja, ich meinte das genau so und genau das klappte nicht,
      da hast Du Recht.

      Die Werte kommen vom HTML Dokument das durch PHP generiert wird.

      Ich möchte nicht IN der Funktion mehrere Aufrufe machen,
      sondern ich möchte von HTML Bereich durch PHP heraus das Javascript
      mehrfach starten und verschiedene Zählwerte übergeben
      und diese wieder zurückbekommen.

      das du aus:
      var bxx+i = document.getElementById('bxx+i')
      dies
      var bxx+i = document.getElementById('bxx' + i)
      gemacht hattest brachte mich auf eine neue Idee,
      leider klappte diese auch nicht.

      1. Hallo!

        Ja, ich meinte das genau so und genau das klappte nicht,
        da hast Du Recht.

        Auf was beziehst du diese Aussage?

        Die Werte kommen vom HTML Dokument das durch PHP generiert wird.

        Ja. Damit wir dir besser helfen können sollten wir wissen, was dein PHP generiert.

        Ich möchte nicht IN der Funktion mehrere Aufrufe machen,

        Du möchtest diese Funktion mehrmals aufrufen...?

        sondern ich möchte von HTML Bereich durch PHP heraus das Javascript
        mehrfach starten und verschiedene Zählwerte übergeben

        Vergiss das PHP. PHP hat damit wirklich nichts zu tun. Du kannst nicht aus PHP heraus etwas in JavaScript starten.

        und diese wieder zurückbekommen.

        Was meinst du mit zurückbekommen?

        ciao, Lukas

        --
        Nach einem Korrspondentenbericht der New York Times aus der umkämpften Stadt, wurden zur „Ausschaltung eines einzigen feindlichen Scharfschützen mehrere 500-Pfund-Bomben, 35 Artilleriegranaten des Kalibers 255, zehn Schüsse aus der Abrams-Panzerkanone sowie 30 000 Patronen leichter Munition benötigt”. „Die Gebäude waren daraufhin Ruinen”, schreibt die New York Times, „aber der Scharfschütze schoss weiter...”
  3. Hallo,

    Ich habe folgendes Counterscript gerade eben noch geschafft zu schreiben:

    function tflotte()
    {
    v=new Date();
    var bxx=document.getElementById('bxx');
    n=new Date();
    ss=pp;
    s=ss-Math.round((n.getTime()-v.getTime())/1000.);

    möchtest du mit v und n die Zeit für den Funktionsaufruf document.getElementById() ermitteln. Das wird sicher weniger als eine Sekunde sein.  (s=0)

    was mir auffällt, nur bxx ist eine lokale Variable innerhalb der Funktion, alle anderen sind global definiert. Warum? http://de.selfhtml.org/javascript/sprache/variablen.htm

    Nutze zur Scriptentwicklung einen Browser, der dir ausführliche Fehlermeldungen liefert. FF oder Opera machen das gut.

    wenn man eine Funktion für verschieden Objekte nutzen möchte, nutzt man Parameter, z. B. so

      
    function tflotte(bxx_id)  
    {  
     var bxx=document.getElementById(bxx_id);  
     ...  
    }  
    for (var i=1;i<10;i++) {  
      tflotte("bxx"+i);  
      }  
    
    

    für
      <div id="bxx1" >
      <div id="bxx2" >

    Wie du merkst, ist auch mir nicht klar, was deine Flottenzeit anzeigen soll ...?

    Gruß plan_B

    --
         *®*´¯`·.¸¸.·
    1. Ich habe gerade Deinen Ansatz gesehen,
      der ist echt lieb gemeint, aber leider in der Tat falsch verstanden.

      Ich möchte nicht IN der Funktion mehrere Aufrufe machen,
      sondern ich möchte von HTML Bereich durch PHP heraus das Javascript
      mehrfach starten und verschiedene Zählwerte übergeben
      und diese wieder zurückbekommen.

      1. Ich möchte nicht IN der Funktion mehrere Aufrufe machen,
        sondern ich möchte von HTML Bereich durch PHP heraus das Javascript
        mehrfach starten und verschiedene Zählwerte übergeben
        und diese wieder zurückbekommen.

        Das ist nicht verständlich.

        Evtl. willst du dich mit Objekten beschäftigen, um dein Problem zu lösen:
        http://de.selfhtml.org/javascript/sprache/objekte.htm#eigene
        http://aktuell.de.selfhtml.org/artikel/javascript/oomodell/

        Struppi.