• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Scriptproblem - Wenn das eine da ist funktioniert das andere nicht - wieso?

Werbung:
Oder ist es am einfachsten wenn ich die scripte jeweils in eine eigene *.js-datei auslager? dann kommt der doch nicht dazu irgendwas zu beenden obwohl das andere läuft, oder?
 
Werbung:
Das Auslagern von Funktionen in externe Datei(en) sollte das Ziel sein. Dadurch bleibt der Code sauber und übersichtlich und kann besser vom Browser verarbeitet werden.

Wenn ich 2 Scripts habe müsste ich doch dann einfach

function init(){
start_ticker();
countdown();
}

oder

window.onload=function(){init()}
eingeben, oder?

Nicht "oder" sondern "und".

Mit

Code:
function init(){
start_ticker();
countdown();
}

legst Du fest, dass es eine Funktion namens "init" gibt die 2 Funktionen "start_ticker" und "countdown" in genau dieser Reihenfolge aufruft.

Mit

Code:
window.onload=function(){init()}

legst Du fest, dass diese Funktion "init" beim Laden der Seite ausgeführt werden soll. D.h. "init" führt dann wie beschrieben die beiden Funktionen "start_ticker" und "countdown" nacheinander aus.
 
ok. das klingt schon mal besser als das was vorher mir versucht wurde zu erklären. :) so ganz raff ich das aber immer noch nicht. kannst du mir das mal von a bis z erklären, wenn du zeit hast? :)

ich hab jetzt 2 funktionen:

Termin-Ticker
<title>Termin-Ticker</title>
<style type="text/css">
#ticker{width:300px;height:200px;overflow:hidden;padding:2px;text-align:left}
</style>
<script type="text/javascript">
function init(){
Scrolling=true; speed=50;
elem=document.getElementById('ticker')
max=elem.scrollHeight;
elem.innerHTML+=elem.innerHTML;
setTimeout('move()',250);
}
function move(){
var scroll=elem.scrollTop;
if (Scrolling){
if(scroll < max) {scroll++}
else{scroll=1}
elem.scrollTop=scroll;
}
setTimeout('move()',speed);
}
window.onload=function(){init()}
</script>
</head><body>

<div class="content" style="padding:1px 0px 1px 1px;">
<p id="ticker" onmouseover="Scrolling=false" onmouseout="Scrolling=true" style="font-size:12">
Hier steht der Text
</p>
</div>


und:


<script language="JavaScript">
// Ziel-Datum in MEZ
var jahr=2222, monat=2, tag=22, stunde=22, minute=22, sekunde=22;
var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);

function countdown() {
startDatum=new Date(); // Aktuelles Datum

// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
if(startDatum<zielDatum) {

var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

// Jahre
while(startDatum<zielDatum) {
jahre++;
startDatum.setFullYear(startDatum.getFullYear()+1);
}
startDatum.setFullYear(startDatum.getFullYear()-1);
jahre--;

// Monate
while(startDatum<zielDatum) {
monate++;
startDatum.setMonth(startDatum.getMonth()+1);
}
startDatum.setMonth(startDatum.getMonth()-1);
monate--;

// Tage
while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
tage++;
startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
}

// Stunden
stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);

// Minuten
minuten=Math.floor((zielDatum-startDatum)/(60*1000));
startDatum.setTime(startDatum.getTime()+minuten*60*1000);

// Sekunden
sekunden=Math.floor((zielDatum-startDatum)/1000);

// Anzeige formatieren
(jahre!=1)?jahre=jahre+" Jahre, ":jahre=jahre+" Jahr, ";
(monate!=1)?monate=monate+" Monate, ":monate=monate+" Monat, ";
(tage!=1)?tage=tage+" Tage, ":tage=tage+" Tag, ";
(stunden!=1)?stunden=stunden+" Stunden, ":stunden=stunden+" Stunde, ";
(minuten!=1)?minuten=minuten+" Minuten und ":minuten=minuten+" Minute und ";
if(sekunden<10) sekunden="0"+sekunden;
(sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";

document.countdownform.countdowninput.value=
jahre+monate+tage+stunden+minuten+sekunden;

setTimeout('countdown()',200);
}
// Anderenfalls alles auf Null setzen
else document.countdownform.countdowninput.value=
"0 Jahre, 0 Monate, 0 Tage, 0 Stunden, 0 Minuten und 00 Sekunden";
}
</script>

<body onload="countdown()">
<form name="countdownform">
<p>
<input size="75" name="countdowninput">
</p>
</form>


------------------------------------

wie sag ich dem den jetzt in der datei wie die funktion heisst die der abarbeiten soll? einmal ticker und einmal countdown, oder? und das
function init(){ start_ticker(); countdown(); }

setz ich wohin?


vielen herzlichen dank... hoffentlich raff ich das danach..:)
 
Du hast nicht 2 Funktionen, Du hast 2 (unvollständige) HTML-Seiten mit unterschiedlichen JavaScript-Funktionen. Soweit ich deinen Beitrag verstehe, willst Du jetzt beide Funktionen auf einer Seite gleichzeitig verwenden?
 
Werbung:
fehlerkonsole?? oder was willst du mir damit sagen?
Ja. Und was deine Anmerkung angeht, deine "Erklräungen" sind ebenfalls kaum verständlich, da das was du uns zeigst ja so richtig ist und funktioniert, woher sollen wir dann Wissen was bei dir nicht funktioniert?

Das zeigt sich jetzt schon wieder, wie der Kommentar von threadi deutlich macht.
 
Ich probier was anderes...

wie muss ich denn die function das alles lädt in den <body> einfügen? so etwa?

<html>
<head>
</head>
<body>

<script language="JavaScript">

function alltostart() {
document.write();
countdown();
}
window.onload = alltostart;
-->
<body onload="start();">
</script>

</body>
</html>


?????
 
Ja. Und was deine Anmerkung angeht, deine "Erklräungen" sind ebenfalls kaum verständlich, da das was du uns zeigst ja so richtig ist und funktioniert, woher sollen wir dann Wissen was bei dir nicht funktioniert?

Das zeigt sich jetzt schon wieder, wie der Kommentar von threadi deutlich macht.

das war keine anmerkung, sondern ich habe es wirklich nicht verstanden. ich bin da kein voll-profi wie ihr es seit, darum ist das für mich noch ein wenig wie chinesich... musst dir da nicht auf den schlips getreten zu fühlen...
 
Werbung:
Jetzt hast du zwei onload Handler, das geht nicht. Ich hatte dir das schon eimnmal gesagt und gezeigt wie du es umgehen kannst http://www.html.de/javascript-ajax-...iert-das-andere-nicht-wieso-2.html#post272954

das war keine anmerkung, sondern ich habe es wirklich nicht verstanden. ich bin da kein voll-profi wie ihr es seit, darum ist das für mich noch ein wenig wie chinesich... musst dir da nicht auf den schlips getreten zu fühlen...
Tu ich auch nicht, ich wollte dir nur sagen, dass für uns deine Fragestellungen teilweise nicht nachvollziehbar sind. Du solltest versuchen dir etwas mehr Mühe zu geben und unsere Sichtweise verstehen. Wir kennen deinen Code nicht und sitzen nicht wie du stundenlang (oder tagelang) davor. Deshalb brauchen wir auch Informationen mit denen wir etwas erklären können.
 
Hatte sich aber so angehört...egal...Freunde? :)

Also,

ich hab 2 Funktionen die ich parallel laufen lassen muss:




Code:
<br><font size=4>Termin-Ticker</font>
<title>Termin-Ticker</title>
<style type="text/css">
#ticker{width:300px;height:300px;overflow:hidden;padding:10px;text-align:left}
</style>
<script type="text/javascript">
function init(){
Scrolling=true; speed=50;
elem=document.getElementById('ticker')
max=elem.scrollHeight;
elem.innerHTML+=elem.innerHTML;
setTimeout('move()',2500);
}
function move(){
var scroll=elem.scrollTop;
if (Scrolling){
if(scroll < max) {scroll++}
else{scroll=1}
elem.scrollTop=scroll;
}
setTimeout('move()',speed);
}
window.onload=function(){init()}
</script>
</head><body>
<div class="content" style="padding:10px 0px 10px 10px;">
<p id="ticker" onmouseover="Scrolling=false" onmouseout="Scrolling=true">
HIER STEHT DER TEXT
</div>
--------------------------------------------------------

und die hier:


Code:
<script language="JavaScript">
// Ziel-Datum in MEZ
      var jahr=2222, monat=2, tag=22, stunde=22, minute=22, sekunde=22;
      var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);

      function countdown() {
        startDatum=new Date(); // Aktuelles Datum

        // Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
        if(startDatum<zielDatum)  {

          var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

          // Jahre
          while(startDatum<zielDatum) {
            jahre++;
            startDatum.setFullYear(startDatum.getFullYear()+1);
          }
          startDatum.setFullYear(startDatum.getFullYear()-1);
          jahre--;

          // Monate
          while(startDatum<zielDatum) {
            monate++;
            startDatum.setMonth(startDatum.getMonth()+1);
          }
          startDatum.setMonth(startDatum.getMonth()-1);
          monate--;

          // Tage
          while(startDatum.getTime()+(24*60*60*1000)<zielDatum) {
            tage++;
            startDatum.setTime(startDatum.getTime()+(24*60*60*1000));
          }

          // Stunden
          stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
          startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);

          // Minuten
          minuten=Math.floor((zielDatum-startDatum)/(60*1000));
          startDatum.setTime(startDatum.getTime()+minuten*60*1000);

          // Sekunden
          sekunden=Math.floor((zielDatum-startDatum)/1000);

          // Anzeige formatieren
          (jahre!=1)?jahre=jahre+" Jahre,  ":jahre=jahre+" Jahr,  ";
          (monate!=1)?monate=monate+" Monate,  ":monate=monate+" Monat,  ";
          (tage!=1)?tage=tage+" Tage,  ":tage=tage+" Tag,  ";
          (stunden!=1)?stunden=stunden+" Stunden,  ":stunden=stunden+" Stunde,  ";
          (minuten!=1)?minuten=minuten+" Minuten  und  ":minuten=minuten+" Minute  und  ";
          if(sekunden<10) sekunden="0"+sekunden;
          (sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";

          document.countdownform.countdowninput.value=
              jahre+monate+tage+stunden+minuten+sekunden;

          setTimeout('countdown()',200);
        }
        // Anderenfalls alles auf Null setzen
        else document.countdownform.countdowninput.value=
            "0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
      }
</script>


<body onload="countdown()">
    <form name="countdownform">
      <p>
        <input size="75" name="countdowninput">
      </p>
    </form>
--------------------------------------------------------

Wo muss ich jetzt

Code:
[B]function init(){
start_ticker();
countdown();
}
window.onload=function(){init()}[/B]
hinschreiben damit das funktioniert?

Das fette hab ich extra mal fett gemacht, weil ich nicht weiß ob das da richtig ist?!?

Schönen Gruß und Danke!
 
Zuletzt bearbeitet:
Nutz doch bitte die BBCode-Tags zur formatierten Darstellung von Quellcode. Wer soll das so denn lesen.
 
Werbung:
Das einzige was du machen musst, soweit ich das sehe, ist den onload Event im body-Tag entfernen, wenn das nicht geht und die Fehlerkonsole leer ist, brauchen wir ein komplettes Beispiel, an dem sich das Problem nachvollziehen läßt.
 
hmm,

ich habe den
Code:
<body onload="countdown()">
komplett rausgenommen und ich seh nur eine weisse box ohne das sich da was tut.

was meinst du mit komplett? soll ich den kompletten quelltext der seite posten?
 
Naja irgendeinen Code, der das machen soll und könnte was du willst.
Das Problem bei dem bisher gezeigten HTML Code ist, er ist extrem fehlerhaft, du wirst ihn doch hoffentlich so nicht benutzen?
 
Werbung:
Ich hab den Code mal zusammengebastelt, wenn du dem ticker genug Inhalt gibst, dass auch etwas zum scrollen da ist, dann funktioniert beides.
 
edit: oh, danke. hab deinen beitrag nicht gesehen...


die 2 scripte müssten aber am besten in 2 verschiedenen kästen laufen?!?!?

aber das mit dem
Code:
[B][B]function init(){ start_ticker(); countdown(); } window.onload=function(){init()}[/B][/B]
kann man nicht allgemein ausdrücken oder meinst du das hat bei mir eh kein Sinn? :D
 
Werbung:
ich meine ob es egal ist wo man es hinschreibt oder kann man sagen das man das an den anfang des scriptes stellt? oder mittdendrin oder vielleicht garnicht da rein...:)

schreib ich das denn auch jedesmal genau so in eine seite rein? ich glaub ich denk viel zu kompliziert...:)
 
Du schreibst das einmal in einen script-Tag. Wie gesagt der onload Event kann in dieser Schreibweise nur einmal erzeugt werden.
 
Zurück
Oben