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

Zeitsteuerung

d.medger

Neues Mitglied
Ich möchte, das auf einer HTML Seite jede Halbe Stunde ein Ton mp3 gespielt wird und jede volle Stunde ein zweiter Ton gespielt wird,
in Abhänigkeit von der realen Urzeit.

Wie bekommt man so was hin ???

Ich würde mich über Hilfe freuen.

MfG
Dankwart
 
Hallo,

in dem per javascript (jquery) die zeit prüfst, schau mal einfach nach "jquery uhr" und dann halt die zeit prüfst und wenn zeit rann ist ein event auslöst, entweder ein click auf ein player oder einfach den player coder per jquery einfüge, der ja dann gleich abgespielt wird.

Als Idee sollte das reichen.

Cheffchen
 
Ups, erstmal Danke, aber mit Deiner Erklärung komme ich nicht so richtig klar....... :roll:
Bin leider recht unerfahren...
Könntest Du mir mit dem Script helfen ????? ;Jump

Dankwart
 
Hallo,

nur ein bisschen

Füge mal das im head deiner Seite ein:
Code:
fehlerhaftercodegelöscht

Wenn noch kein jquery drin hast dann das vor dem oberen
Code:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

jetzt noch zum test im body bereich, also im inhalt mal das einfügen und schauen ob was passiert
Code:
<p id="date"></p>
<p id="time"></p>

damit hättest schon die hälfte.

Wenn das funzt brauchst halt nur "now.minute" prüfen und wenn 30 dann halt xyz machen.

Cheffchen
 
Zuletzt bearbeitet:
Hallo,

also so wird das nichts.
Ersten per PN im schmerzfall mal ein Link den man nicht zeigen möchte, (was ich bei deiner nicht verstehe, ist ja ein Private und bekommst vom auftraggeber keine auf die Nase.)

Zweitens: Der Anspruch 100% Valide und schicken code zu erstellen muss man bei eine Privaten Seite ja auch nicht haben aber grundsätzliches muss einfach stimmen sonst gibt der Browser nömlich auf und sagt "nö das kann ich nicht machen weil ich das nicht verstehe" das wird warscheinlich das Problem sein und das mein code oben falsch ist tut auch seines dazu :O)

also zuerst mal mach deine seite so halbwegs in ordnung

eine Seite beginnt mit <html> und endet mit </html> also nichts da vor oder da nach.
dann kommt direkt dach <html> der head block, also <head> </head>, da zwischen kommt alles was mit <style oder <script beginnt. aber drann denken jeder anfang hat ein ende also </style und so.
Nach </head> kommt <body> </body> dort ist der sichtbare inhalt.
html, head und body bereiche gibts immer nur einmal, du hast da auch ein zwei mehr.

So hier jetzt das funktionierente
Das in den head bereich
Code:
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
<script type='text/javascript'>
$(window).load(function(){
function refreshTime() {
    var jetzt = new Date();
    $('#hours').html(jetzt.getHours());
    $('#minut').html(jetzt.getMinutes());
    $('#secu').html(jetzt.getSeconds());
    if(jetzt.getMinutes()=='30'){
        alert("30 min aktion");
    }
}
refreshTime();
setInterval(refreshTime, 1000);
});
</script>
und das in dein body bereich, dort wird dann die Uhrzeit angezeigt zum test, das kann später dann wieder raus
Code:
<p id="hours">aa</p>
<p id="minut">aa</p>
<p id="secu">bb</p>
Hier das ganze mal in aktion: x_js_zeit - jsFiddle

Cheffchen
 
Hallo,

also so wird das nichts.
Ersten per PN im schmerzfall mal ein Link den man nicht zeigen möchte, (was ich bei deiner nicht verstehe, ist ja ein Private und bekommst vom auftraggeber keine auf die Nase.)

Zweitens: Der Anspruch 100% Valide und schicken code zu erstellen muss man bei eine Privaten Seite ja auch nicht haben aber grundsätzliches muss einfach stimmen sonst gibt der Browser nömlich auf und sagt "nö das kann ich nicht machen weil ich das nicht verstehe" das wird warscheinlich das Problem sein und das mein code oben falsch ist tut auch seines dazu :O)

also zuerst mal mach deine seite so halbwegs in ordnung

eine Seite beginnt mit <html> und endet mit </html> also nichts da vor oder da nach.
dann kommt direkt dach <html> der head block, also <head> </head>, da zwischen kommt alles was mit <style oder <script beginnt. aber drann denken jeder anfang hat ein ende also </style und so.
Nach </head> kommt <body> </body> dort ist der sichtbare inhalt.
html, head und body bereiche gibts immer nur einmal, du hast da auch ein zwei mehr.

So hier jetzt das funktionierente
Das in den head bereich
Code:
<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
<script type='text/javascript'>
$(window).load(function(){
function refreshTime() {
    var jetzt = new Date();
    $('#hours').html(jetzt.getHours());
    $('#minut').html(jetzt.getMinutes());
    $('#secu').html(jetzt.getSeconds());
    if(jetzt.getMinutes()=='30'){
        alert("30 min aktion");
    }
}
refreshTime();
setInterval(refreshTime, 1000);
});
</script>
und das in dein body bereich, dort wird dann die Uhrzeit angezeigt zum test, das kann später dann wieder raus
Code:
<p id="hours">aa</p>
<p id="minut">aa</p>
<p id="secu">bb</p>
Hier das ganze mal in aktion: x_js_zeit - jsFiddle

Cheffchen

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Also, der Script ist jetzt OK, im Ergebnis wird die aktuelle Zeit angezeigt Stunden, Minuten, Sekunden.

Wie bekomme ich kleiner Dummi nun den Skript dazu, das er zur Vollen Stunde aa.mp3 abspielt und zur halben Stunde bb.mp3 ????
in Abhänigkeit zur realen Zeit...
Das ist ja mein eigentliches Problem :roll:

Ich Danke Dir für Deine Langmut mit mir Trottel... Solltest Du Mal in die Sächsische Schweiz kommen, hast Du mehr als ein Bier bei mir Gut :smile:

Übrigens die Webseite ist ganz privat und nur ein Neues Hobby von mir, wollte schon immer eine Webcam zum Falkenstein :roll:

Gruß und erstmal tausend Dank

Dankwart
 
Großen Dank für Deine Unterstützung!!!

Grundsätzlich ist jetzt der Sound an der richtigen Stelle, das letzte Problem, besteht nun darum, das der Sound 60 Sekunden lang immer neu gestartet wird. Das ist natürlich Mist....

Hab mit dem Intervall gespielt, bei 60000 ms ist es zwar OK da wird der Sound nur 1x abgespielt, aber, damit läuft die Zeit nicht synchron, was zu einer Verschiebung bis zu 60 s führt, somit auch nicht optimal.

Als Bezugszeit stat der Minuten die Sekunden zu nehmen, funktioniert auch nicht, da der Script mit 1800000 ms = 30 min. nichts anfangen kann.

Was währe noch zu tuen, damit die Aktion Sound abspielen, nur 1x läuft?

Grüße aus der Sächsischen Schweiz

Dankwart
 
Denke, das wird nichts bringen. Die Wiederholung kommt daher, dass die Funktion refreshTime() jede Sekunde aufgerufen wird und die Bedingung if(jetzt.getMinutes()=='30') ist eine Minute lang erfüllt und während dieser Minute wird der Ton jede Sekunde getriggert. Ihr müsst eine Neuigkeitsauswertung machen, d. h. den Ton nur dann abspielen, wenn der Minutenwert 30 ist und er sich gerade geändert hat.
 
Hallo,

ah stimmt, ist halt wenn man das nur in der theorie macht.
setinterval von 1000 auf 60000, dann wir das nur einmal pro minute gestartet und damit dürfte das nur einmal starten.

Cheffchen
 
Hallo Dankwart,
probiers mal so:
Code:
[B]var jetzt = new Date();
var noteMinutes = jetzt.getMinutes();[/B]
function refreshTime() {
    var jetzt = new Date();
    $('#hours').html(jetzt.getHours());
    $('#minut').html(jetzt.getMinutes());
    $('#secu').html(jetzt.getSeconds());
    [B]if (jetzt.getMinutes() != noteMinutes){[/B]
        if(jetzt.getMinutes()=='0'){
            $('#sound').html("<embed src='http://sound0min.mid' loop='false' hidden='true' height='0' width='0'>");
            //alert("30 min aktion");
        }
        if(jetzt.getMinutes()=='30'){
            $('#sound').html("<embed src='http://sound30min.mid' loop='false' hidden='true' height='0' width='0'>");
            //alert("30 min aktion");
        }
    [B]}
    noteMinutes = jetzt.getMinutes();[/B]
}
 
Zuletzt bearbeitet von einem Moderator:
Da gäbe es mehrere Ansätze. Man könnte die Abfrage erweitern, dass sowohl Minute als auch Sekunde auf Null stehen müssen. Oder baut sich ein custom Event und kann darauf dann die Event-Methoden von jQuery anwenden, wie bsw. one().

Code:
$(document).one('customEvent', function(event) {
......
});

$(document).trigger('customEvent');
 
Grundsätzlich erstmal Danke für alle die sich dem Problem angenommen haben.
Ich setze Mal den ganzen Script hier rein, damit besser zu verstehen ist, was ich will.
Wie Ihr schon gesehen habt, bin ich absoluter Laie.



loop='false, ----- bring nichts,
noteMinutes = ();------- geht auch nicht-------------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html>
<head>


<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
<script type='text/javascript'>
$(window).load(function(){


function refreshTime() {
var jetzt = new Date();
$('#hours').html(jetzt.getHours());
$('#minut').html(jetzt.getMinutes());
$('#secu').html(jetzt.getSeconds());
if(jetzt.getMinutes()=='0'){
$('#sound').html("<embed src='http://www.web-dago.de/bb.mp3' hidden='true' height='0' width='0'>");
//alert("0 min aktion");
}
if(jetzt.getMinutes()=='15'){
$('#sound').html("<embed src='http://www.web-dago.de/aa.mp3' loop='false' hidden='true' height='0' width='0'>");
//alert("15 min aktion");
}
if(jetzt.getMinutes()=='30'){
$('#sound').html("<embed src='http://www.web-dago.de/aa.mp3' loop='false' hidden='true' height='0' width='0'>");
//alert("30 min aktion");
}
if(jetzt.getMinutes()=='45'){
$('#sound').html("<embed src='http://www.web-dago.de/aa.mp3' loop='false' hidden='true' height='0' width='0'>");
//alert("45 min aktion");
}



}
refreshTime();
setInterval(refreshTime, 1000);
});
</script>




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


<body>
Der Teil ist nur Test anzeige, das der Script läuft,
wird wieder entfernt.


<p id="hours">aa</p>
<p id="minut">aa</p>
<p id="secu">bb</p>
<p id="sound">xxx</p>


</body>

</html>
 
Hallo,

ah stimmt, ist halt wenn man das nur in der theorie macht.
setinterval von 1000 auf 60000, dann wir das nur einmal pro minute gestartet und damit dürfte das nur einmal starten.

Cheffchen


Die Idee hatte ich auch schon, nur dann geht die "Uhr" bis zu 59s falsch, abhänig davon in welcher Sekunde die HTML Seite gestartet wird. Gut, das währe eine Krücke, aber nicht ganz optimal

Dankwart
 
Hallo,

klar @Tronjer, enfach sekunde auch prüfen, das richtige is so nah :O)

jetzt aber.

Code:
function refreshTime() {
    var jetzt = new Date();
    $('#hours').html(jetzt.getHours());
    $('#minut').html(jetzt.getMinutes());
    $('#secu').html(jetzt.getSeconds());
    if(jetzt.getMinutes()=='0' && jetzt.getSeconds()=='0'){
        $('#sound').html("<embed src='http://sound0min.mid' loop='false' hidden='true' height='0' width='0'>");
        //alert("30 min aktion");
    }
      if(jetzt.getMinutes()=='30' && jetzt.getSeconds()=='0'){
        $('#sound').html("<embed src='http://sound30min.mid' loop='false' hidden='true' height='0' width='0'>");
        //alert("30 min aktion");
    }
}
refreshTime();
setInterval(refreshTime, 1000);

das mit one() habe ich leider nicht ganz verstanden, wie resetet man das dann wenn das die nächste stunde wieder passieren soll?
oder war das bloss eine idee.

Cheffchen
 
Hallo Jungs ;Jump ich danke allen, die an der Lösung meines Problems mitgeholfen haben.
Mein besonderer Dank gilt "Chefchen", den ich bestimmt genervt habe :roll:, der aber tapfer durchgehalten hat.

Herzliche Grüße
Dankwart
 
Hallo,

das mit one() habe ich leider nicht ganz verstanden, wie resetet man das dann wenn das die nächste stunde wieder passieren soll?
oder war das bloss eine idee.

Cheffchen

Grundgedanke ist, dass es sich hier ja um eine Art Event handelt. Nun ist man bei jQuery dabei nicht auf die üblichen Mouse-/Keyboard-Events angewiesen, sondern kann mit trigger() auch eigene entwerfen, die dann die Event-Funktionen von jQuery erben. Ist quasi ein Ghetto-Prototyping.

Einem Event kann man per one() sagen, dass es nur einmal getriggered werden soll, oder darauf eine Kombination von bind() / undbind() verwenden. Oder man baut einen Callback mit einer notification ein, welche einer anderen Funktion mitteilt, dass das Event bereits gefired wurde und nicht wiederholt werden darf, bevor ein bestimmter Zustand (time) wieder true ist.

War soweit auch nur eine Idee, und deine Lösung ist natürlich einfacher.
 
Zurück
Oben