Javascript'ler gefragt

Javascript'ler gefragt| Datum: 13.01.2010 - 18:01 | Author: Mgier

Ich brauche einen Javascript, einen Countdown, jedoch von einem bereits gestellten Zeitformat: Stunden:Minuten:Sekunden mit führenden Nullen. Nun soll heruntergezählt werden. Wenn man bei 00:00:00 angelangt ist, sollte sich nach Möglichkeit die Seite reloaden, oder einfacht das runterzählen stoppen.
Ist sowas überhaupt realisierbar, und könnte wäre jemand so freundlich das zu machen? Entgeld kann ich keines bieten, nur einen Platz in der Zusammenbau-Phase eines Browsergames und somit das Script in Action zu sehen.

Re: Javascript'ler gefragt| Datum: 13.01.2010 - 19:01 | Author: Der_Admin

Ja, es ist möglich.
In welchem Format willst du die Zeit angeben?
In Sekunden, Minuten oder Stunden, also die Zeit bei ders starten soll.

Re: Javascript'ler gefragt| Datum: 15.01.2010 - 18:01 | Author: Mgier

Hm, naja, wenn die Zeit im Format HH:MM:SS angegeben ist wirds en bisserle schwer, das kann ich mir denken, richtig? Ich könnte die Zeit auch in Sekunden angeben. Allerdings soll ja, falls Javascript deaktiviert, kein Nachteil entstehen, das ist mir sehr wichtig, es soll dann halt die Zeit ormal angezeigt werden, halt ohne runterlaufen...
Wenn du dir das ansehen möchtest: http://mgier.xe.cx
Benutzername: test
Passwort: test
Einfach auf die Inselübersicht gehen und ein Gebäude deiner Wahl ausbauen, dann sollte bei den Gebäuden auch der Ausbau erscheinen. Dort steht dann die verbleibende Zeit.

Re: Javascript'ler gefragt| Datum: 15.01.2010 - 19:01 | Author: Anonymous

habe ich dich richtig verstanden?
Wenn ja, dann meinst du sowas, oder? ich muss es nur noch zum Laufen kriegen, bisher funzt es noch nicht:
[syntax=html]<script type="text/javascript">
var zeit = 10000; // 10 Sekunden zum herunterzaehlen
setInterval("zaehlen()",1000);
var i = zeit;
function zaehlen(){
var i = i - 1000;
document.getElementById("zaehler").innerHTML = i;
}
</script>

<div id="zaehler"></div>[/syntax]
lg DHMH

Re: Javascript'ler gefragt| Datum: 15.01.2010 - 20:01 | Author: Mgier

Soweit ich das aus PHP-Logik verfolgen kann, ja. Nur halt dann die Sekunden in Stunden:Minuten:Sekunden formatiert. Und soweit ich dem folgen kann, kann ich im "zaehler" - div auch mit php die normale zeit generieren, dnn falls Javascript funktioniert, wird das dann überschrieben, richtig? Falls ja, das wäre toll.
Mir ist noch was eingefallen, wie im Chat geschrieben, werde ich in diverse foren irgendeinen Werbebutton für das Board in meine Signatur aufnehmen.

Re: Javascript'ler gefragt| Datum: 16.01.2010 - 17:01 | Author: Mator Kaleen

So, da hab ich mich jezt mal hingesetzt...

Code


<script type='text/javascript'>
var dauer = /*Dein Wert in Sekunden*/;
window.onload = countdown;
function countdown () {
//wird jede sekunde aufgerufen, zählt restsekunden runter
dauer--;
window.setTimeout(countdown, 1000);
//zeit berechnen:
if (dauer < 60)
{
//< 1 Minute
tage = 0;
stunden = 0;
minuten = 0;
sekunden = dauer;
document.getElementById('countdown').innerHTML = 'noch '+dauer+' Sekunde(n)';
}
else if (dauer >= 60 && dauer < 3600)
{
//>= 1 Minute
tage = 0;
stunden = 0;
minuten = Math.floor((dauer/60));
sekunden = dauer-minuten*60;
document.getElementById('countdown').innerHTML = 'noch '+minuten+' Minute(n), '+sekunden+' Sekunde(n)';
}
else if (dauer >= 3600 && dauer < 86400)
{
//>= 1 Stunde
minuten = Math.floor((dauer/60));
stunden = Math.floor(minuten/60);
minuten_2 = minuten-stunden*60;
tage = 0;
sekunden = dauer-minuten*60;
minuten = minuten_2;
document.getElementById('countdown').innerHTML = 'noch '+stunden+' Stunden, '+minuten+' Minute(n), '+sekunden+' Sekunde(n)';
}
else if (dauer >= 86400)
{
//>= 1 Tag
minuten = Math.floor((dauer/60));
stunden = Math.floor(minuten/60);
minuten_2 = minuten-stunden*60;
tage = Math.floor(stunden/24);
stunden_2 = stunden-tage*24;
stunden = stunden_2;
sekunden = dauer-minuten*60;
minuten = minuten_2;
document.getElementById('countdown').innerHTML = 'noch '+tage+' Tage, '+stunden+' Stunden, '+minuten+' Minute(n), '+sekunden+' Sekunde(n)';
};
}
</script>
<p id="countdown"></p>



Re: Javascript'ler gefragt| Datum: 16.01.2010 - 18:01 | Author: Mgier

Danke funktioniert prima! Wenn ich mich irgendwie revanchieren kann, melde dich :)

:: Bearbeitet am Sa 16. Jan 2010, 19:31 ::

Ich bräuchte nochmal kurze Nachhilfe. Ich hab mir das für etwas anderes noch umgebaut, für einen Rohstoffzähler, was auch funktioniert.

Code


<script type=\'text/javascript\'>
resw = ' . $a . ';
window.onload = res1;
function res1 () {
resw++;
window.setTimeout("res1()", 3600000/' . $wo_h . ');
if(resw >= ' . $max . '){
resw = ' . $max . ';
}
document.getElementById(\'res1\').innerHTML = resw;
}
</script>



Erklärung: $a = die Momentanen Rohstoffe
$wo_h = Rohstoffzuwachs pro stunde.
$max = die Rohstoffgrenze

Das ganze funktioniert, aber nur, wenn nicht gerade der andere Countdown läuft. Ich nehme, das liegt an settimeout. Wie kann mn das zum funktionieren bringen? Großes Danke schon im voraus!

Re: Javascript'ler gefragt| Datum: 17.01.2010 - 14:01 | Author: Mator Kaleen

PHP-Variablen musst du so übergeben:

Code


<script type="text/javascript">
var resw = <?php echo $a ?>;
window.onload = res1;
function res1() {
resw++;
window.setTimeout('res1()', 3600000/<?php echo $wo_h ?>);
if(resw >= <?php echo $max ?>){
resw = <?php echo $max?>;
}
document.getElementById('res1').innerHTML = resw;
}
</script>

<p id="res1"></p>




du musst deinen PHP-Code dann haöt auch in die Datei reintun

P.S. Außerdem definiert man JS-Variablen mit var

Re: Javascript'ler gefragt| Datum: 17.01.2010 - 15:01 | Author: Mgier

Sry, ich hab dir da jetzt 980 Zeilen Code enthalten ;)
Die Variablen sind schon richtig eingefügt. Ich sollte mir wohl doch mal grundlegendes Javascript ansehen. Ich probiers gleich mal aus, danke!

:: Bearbeitet am So 17. Jan 2010, 15:58 ::

Weiters bleibt: Wenn der Countdown, also der andere Script läuft, geht es nicht, sonst schon :(

Re: Javascript'ler gefragt| Datum: 18.01.2010 - 14:01 | Author: Mator Kaleen

Vielleicht hast du doppelte Variablen???

Re: Javascript'ler gefragt| Datum: 18.01.2010 - 21:01 | Author: Mgier

Falls es hilft, hier der Ausschnitt des Quellcodes mit den Scripten:

Code


<td><script type='text/javascript'>
var resw = 90;
window.onload = res1;
function res1() {
resw++;
window.setTimeout('res1()', 3600000/20);
if(resw >= 200){
resw = 200;
}
document.getElementById('res1').innerHTML = resw;
}
</script>
<div style="text-align:center;"><img src="graphics/icons/holz_button.png" title="Holz" alt="Holz"> <p style="display:inline" id="res1">90</p> <img src="graphics/icons/lehm_button.png" title="Lehm" alt="Lehm"> 101 <img src="graphics/icons/stein_button.png" title="Stein" alt="Stein"> 100 <img src="graphics/icons/brot_button.png" title="Nahrung" alt="Nahrung"> 160 <img src="graphics/icons/insgesam_button.png" title="Lagerkapazität" alt="Lagerkapazität"> 200 <img src="graphics/icons/bewohner_button.png" title="Bewohner" alt="Bewohner"> 21/370</div></td>
</tr></table>
</div>
<hr>
<div class="content">
<h3>Ausbau</h3><table style="margin:auto;"><tr><th style="background-color:#ccc;">Gebäude</th><th style="background-color:#ccc;">Fertig am</th><th style="background-color:#ccc;">Verbleibende Zeit</th><tr><td style="background-color:#ccc;">Lagerhalle</td><td style="background-color:#ccc;">18.01.2010 - 21:43</td><td style="background-color:#ccc;"><script type='text/javascript'>
var dauer = 1252;
window.onload = countdown;
function countdown () {
//wird jede sekunde aufgerufen, zählt restsekunden runter
dauer--;
window.setTimeout(countdown, 1000);
//zeit berechnen:
if (dauer < 60)
{
//< 1 Minute
stunden = '00';
minuten = '00';
sekunden = dauer;
if(sekunden < 10){
sekunden = '0' + sekunden;
}
document.getElementById('countdown').innerHTML = ''+stunden+':'+minuten+':'+sekunden+'';
}
else if (dauer >= 60 && dauer < 3600)
{
//>= 1 Minute
stunden = '00';
minuten = Math.floor((dauer/60));
sekunden = dauer-minuten*60;
if(sekunden < 10){
sekunden = '0' + sekunden;
}
if(minuten < 10){
minuten = '0' + minuten;
}
document.getElementById('countdown').innerHTML = ''+stunden+':'+minuten+':'+sekunden+'';
}
else if (dauer >= 3600)
{
//>= 1 Stunde
minuten = Math.floor((dauer/60));
stunden = Math.floor(minuten/60);
minuten_2 = minuten-stunden*60;
sekunden = dauer-minuten*60;
minuten = minuten_2;
if(sekunden < 10){
sekunden = '0' + sekunden;
}
if(minuten < 10){
minuten = '0' + minuten;
}
if(stunden < 10){
stunden = '0' + stunden;
}
document.getElementById('countdown').innerHTML = ''+stunden+':'+minuten+':'+sekunden+'';
};
if (dauer <= 0) window.location.href = '/?location=viewisland&id=2';
}
</script>
<p id="countdown">00:20:52</p>




Falls es nicht gehen sollte, komm ich aber erstmal auch ohne das Feature klar.
Mfg

Re: Javascript'ler gefragt| Datum: 19.01.2010 - 18:01 | Author: Mator Kaleen

krieg ich vielleicht mal eine genaue beschreibung des fehlers?

Re: Javascript'ler gefragt| Datum: 19.01.2010 - 18:01 | Author: Mgier

Tja Javascript geht sehr sparsam mit Fehlermeldungen um, ich versuchs nochmal.

Der Countdown von dir funktioniert perfekt, und das habe ich umgemünzt auf einen Rohstoffzähler, der nach angegebener Zeit (siehe Script) hinaufzählt. Dieser funktioniert aber nicht gleichzeitig mit dem Countdown, wieso weiß ich leider nicht. Wenn du dir das vor Ort anschauen willst, die Zugangsdaten müssten in meinem ersten Post stehen.

Re: Javascript'ler gefragt| Datum: 19.01.2010 - 21:01 | Author: Der_Admin

Was für nen Browser hast du mgier?
Es gibt nähmlich immer so developer tools ;)

Re: Javascript'ler gefragt| Datum: 19.01.2010 - 21:01 | Author: Mgier

IE und Firefox, benutze aber immer IE.

Re: Javascript'ler gefragt| Datum: 20.01.2010 - 13:01 | Author: Anonymous

Und der IE hat momentan eine äußerst brisante Sicherheitslücke.
Schmeiß das teil runter und nutz nur noch den FF (oder einen anderen guten Browser).

http://www.gulli.com/news/ie-schwachstelle-wird-aktiv-ausgenutzt-2010-01-19

selbst der BSI warnt davor, und empfiehlt Browseralternativen:
https://www.bsi.bund.de/cln_183/ContentBSI/presse/Pressemitteilungen/Sicherheitsluecke_IE_150110.html

Re: Javascript'ler gefragt| Datum: 20.01.2010 - 14:01 | Author: Anonymous

@Balmung:
Den Artikel habe ich auch gerade gelesen ;)

lg DHMH

Re: Javascript'ler gefragt| Datum: 20.01.2010 - 19:01 | Author: Mator Kaleen

[offtopic:156evmwx]*BEEP* *BEEP* "FEHLER GEFIXT!!!" *BEEP* *BEEP*[/offtopic:156evmwx]

Du darfst NIEMALS mehrere window.onload reinschreiben. da musst du die Funktionen die du aufrufen willst in eine weitere schreiben. So jezt gehts, hab ich mir angepasst.
Tipp: Schreibe alle deine Skripts im header in eins rein.

Code


<script type='text/javascript'>
function loading() {
res1();
countdown();
}
window.onload = loading;

var resw = 90;
function res1() {
resw++;
window.setTimeout('res1()', 3600000/20);
if(resw >= 200){
resw = 200;
}
document.getElementById('res1').innerHTML = resw;
}


var dauer = 1252;
function countdown() {
//wird jede sekunde aufgerufen, zählt restsekunden runter
dauer--;
window.setTimeout(countdown, 1000);
//zeit berechnen:
if (dauer < 60)
{
//< 1 Minute
stunden = '00';
minuten = '00';
sekunden = dauer;
if(sekunden < 10){
sekunden = '0' + sekunden;
}
document.getElementById('countdown').innerHTML = ''+stunden+':'+minuten+':'+sekunden+'';
}
else if (dauer >= 60 && dauer < 3600)
{
//>= 1 Minute
stunden = '00';
minuten = Math.floor((dauer/60));
sekunden = dauer-minuten*60;
if(sekunden < 10){
sekunden = '0' + sekunden;
}
if(minuten < 10){
minuten = '0' + minuten;
}
document.getElementById('countdown').innerHTML = ''+stunden+':'+minuten+':'+sekunden+'';
}
else if (dauer >= 3600)
{
//>= 1 Stunde
minuten = Math.floor((dauer/60));
stunden = Math.floor(minuten/60);
minuten_2 = minuten-stunden*60;
sekunden = dauer-minuten*60;
minuten = minuten_2;
if(sekunden < 10){
sekunden = '0' + sekunden;
}
if(minuten < 10){
minuten = '0' + minuten;
}
if(stunden < 10){
stunden = '0' + stunden;
}
document.getElementById('countdown').innerHTML = ''+stunden+':'+minuten+':'+sekunden+'';
};
if (dauer <= 0) window.location.href = '/?location=viewisland&id=2';
}
</script>
<p style="display:inline" id="res1"></p>
<p id="countdown"></p>



Re: Javascript'ler gefragt| Datum: 21.01.2010 - 21:01 | Author: Mgier

Ich bedanke mich recht herzlich, das klappt nun wunderbar :)
[mod="DHMH":2au1zlt5]Thema als gelöst markiert[/mod:2au1zlt5]

Re: Javascript'ler gefragt| Datum: 23.01.2010 - 10:01 | Author: L3oop

Vielleicht bin ich schon zu spät, aber hier ist ein Countdown-Generator von mir:
http://l3oop.bplaced.net/javascript/js_cogen.php

Re: Javascript'ler gefragt| Datum: 28.01.2010 - 21:01 | Author: Mgier

Ich muss hier nochmal einhaken, ein weiteres Problem. Ich hab einen weiteren Zähler erstellt und dabei einfach überall _2 drangehängt und natürlich in der loading() verankert.
Leider klappt es nicht. Hier der Code

Code


<script type=\'text/javascript\'>
var dauer_2 = ' . $sec2 . ';
function countdown_2 () {
//wird jede sekunde aufgerufen, zählt restsekunden runter
dauer_2--;
window.setTimeout(countdown_2, 1000);
//zeit berechnen:
if (dauer_2 < 60)
{
//< 1 Minute
stunden_2 = \'00\';
minuten_2 = \'00\';
sekunden_2 = dauer_2;
if(sekunden_2 < 10){
sekunden_2 = \'0\' + sekunden_2;
}
document.getElementById(\'countdown_2\').innerHTML = \'\'+stunden_2+\':\'+minuten_2+\':\'+sekunden_2+\'\';
}
else if (dauer_2 >= 60 && dauer_2 < 3600)
{
//>= 1 Minute
stunden_2 = \'00\';
minuten_2 = Math.floor((dauer_2/60));
sekunden_2 = dauer_2-minuten_2*60;
if(sekunden_2 < 10){
sekunden_2 = \'0\' + sekunden_2;
}
if(minuten_2 < 10){
minuten_2 = \'0\' + minuten_2;
}
document.getElementById(\'countdown_2\').innerHTML = \'\'+stunden_2+\':\'+minuten_2+\':\'+sekunden_2+\'\';
}
else if (dauer_2 >= 3600)
{
//>= 1 Stunde
minuten_2 = Math.floor((dauer_2/60));
stunden_22 = Math.floor(minuten_2/60);
minuten_2 = minuten_2-stunden_2*60;
sekunden_2 = dauer_2-minuten_3*60;
minuten2 = minuten_22;
if(sekunden_2 < 10){
sekunden_2 = \'0\' + sekunden_2;
}
if(minuten_2 < 10){
minuten_2 = \'0\' + minuten_2;
}
if(stunden_2 < 10){
stunden_2 = \'0\' + stunden_2;
}
document.getElementById(\'countdown_2\').innerHTML = \'\'+stunden_2+\':\'+minuten_2+\':\'+sekunden_2+\'\';
};
if (dauer_2 <= 0) window.location.href = \'/?location=viewisland&id=' . $island . '&b=' . $building . '\';
}



Re: Javascript'ler gefragt| Datum: 29.01.2010 - 14:01 | Author: L3oop

Ersetze
window.setTimeout(countdown_2, 1000);
durch
window.setTimeout(\'countdown_2()\', 1000);

Re: Javascript'ler gefragt| Datum: 29.01.2010 - 16:01 | Author: Mgier

[quote="L3oop":33v1g5l3]Ersetze
window.setTimeout(countdown_2, 1000);
durch
window.setTimeout(\'countdown_2()\', 1000);[/quote:33v1g5l3]
Bringt leider nicht den gewünschten Erfolg :(

Re: Javascript'ler gefragt| Datum: 29.01.2010 - 17:01 | Author: Mator Kaleen

ich weiß zwar nich was mit diesem \' gemeint ist (so was hab ich noch nie gesehen), aber den code hab ich überarbeitet:

Code


<script type='text/javascript'>
var dauer_2 = 2000;
window.onload = countdown_2;
function countdown_2() {
//wird jede sekunde aufgerufen, zählt restsekunden runter
dauer_2--;
window.setTimeout(countdown_2, 1000);

//zeit berechnen:
if (dauer_2 < 60)
{
//< 1 Minute
stunden_2 = 0;
minuten_2 = 0;
sekunden_2 = dauer_2;
if(sekunden_2 < 10){
sekunden_2 = '0' + sekunden_2;
}
document.getElementById('countdown_2').innerHTML = stunden_2 + ':' + minuten_2 + ':' + sekunden_2;
}
else if (dauer_2 >= 60 && dauer_2 < 3600)
{
//>= 1 Minute
stunden_2 = 00;
minuten_2 = Math.floor((dauer_2/60));
sekunden_2 = dauer_2-minuten_2*60;
if(sekunden_2 < 10){
sekunden_2 = '0' + sekunden_2;
}
if(minuten_2 < 10){
minuten_2 = '0' + minuten_2;
}
document.getElementById('countdown_2').innerHTML = stunden_2 + ':' + minuten_2 + ':' + sekunden_2;
}
else if (dauer_2 >= 3600)
{
//>= 1 Stunde
minuten_2 = Math.floor((dauer_2/60));
stunden_22 = Math.floor(minuten_2/60);
minuten_2 = minuten_2-stunden_2*60;
sekunden_2 = dauer_2-minuten_3*60;
minuten2 = minuten_22;
if(sekunden_2 < 10){
sekunden_2 = '0' + sekunden_2;
}
if(minuten_2 < 10){
minuten_2 = '0' + minuten_2;
}
if(stunden_2 < 10){
stunden_2 = '0' + stunden_2;
}
document.getElementById('countdown_2').innerHTML = stunden_2 + ':' + minuten_2 + ':' + sekunden_2;
};
if (dauer_2 <= 0) window.location.href = '/?location=viewisland&id=' + $island + '&b=' + $building;
}
</script>
<p id ="countdown_2"></p>



Re: Javascript'ler gefragt| Datum: 06.02.2010 - 10:02 | Author: L3oop

In deinem letzten Thread habe ich gesehen, dass du den Code per PHP ausgeben lässt. Damit PHP die einfachen Anführungszeichen nicht als Ende des auszugebenden Strings erkennt, was zu Fehlern führen würde, muss man sie mit einem \ maskieren.