• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Video currentTime

Gwunderi

New member
Hallo zusammen,

Will mir für Videos eine ausgelagerte Script-Datei anlegen. Es funktioniert z.B. der Button "Play" (abspielen), Buttons Volumen höher/niedriger und noch weitere. Bei der Anzeige der aktuellen Abspielzeit funktioniert hingegen etwas nicht und ich finde den Fehler nicht:

Code:
function play(idv)
{var video = document.getElementById(idv);
if (video.paused)
	{video.play();}
else	{video.pause();}
aktuell();}

function aktuell(idv, idb)
{var video = document.getElementById(idv);
var button = document.getElementById(idb);
var a = video.currentTime;
var m = 0;
var s = Math.floor(a);
if (s > 59 && s < 120)
	{s = Math.floor(a-60);
	m = 1;}
if (s > 120 && s < 180)
	{s = Math.floor(a-120);
	m = 2;}
if (s < 10)
	{s = "0" + s;}
button.textContent = m + ":" + s;
setTimeout(aktuell, 100);}

Beim Abspielen bleibt die Zeitangabe im Button beim vorgegebenen Anfangswert 0:00, und nur wenn ich auf den Button klicke, zeigt es dann die aktuelle Abspielzeit an.

Habe exakt denselben Code als Skript im HTML-Dokument, und da funktioniert es einwandfrei (die Zeit wird fortlaufend angezeigt). Könnte es etwas mit dem setTimeout zu tun haben, oder was sonst?

Danke Euch für Tipps
Gwunderi
 
... im play() bekommt es aber auch keinen. Das sollte also auch nicht funktionieren.

PS: Deine Codeformatierung ist wirklich suboptimal.
 
korrekt. aktuell() möchte gerne 2 Parameter, bekommt aber keine.

Meinst Du ganz am Schluss

Code:
setTimeout(aktuell(idv, idb), 100);}

Falls ja, hatte ich schon versucht, geht aber auch so nicht.
(Und "Play" funktioniert übrigens bestens).

Sorry für meine verspätete Antwort, komme wohl erst morgen wieder so richtig dazu.

Danke Euch und Grüsslein,
Gwunderi
 
Schau' doch mal in die Fehlerkonsole. Da sollte was drinnen stehen, wenn du play() aufrufst.

Code:
setTimeout(aktuell(idv, idb), 100);}
Kann nicht funktionieren, da du hierbei ja an window.setTimeout() keine Funktionsreferenz sondern den Rückgabewert von aktuell(), also undefined, übergibst. Außerdem sollte das eine Endlosrekursion erzeugen...

Wenn dann funktioniert
Code:
window.setTimeout(function(){
	aktuell(idv, idb);
});

Aber ich bin sowieso nicht sicher, ob das eine kluge Idee ist, dass sich aktuell immer selber den Timeout erzeugt. Anscheinend rufst du ja aktuell an mehreren Stellen auf. Dadurch werden das immer mehr Timeouts und damit Aufrufe von aktuell und irgendwann mag der Browser nicht mehr.
 
Zurück
Oben