onload bei tr
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
anzahl
bestimmen
code
countdown
frage
funktion
helfen
information
kurzen befehl
minute
native
problem
schlank bleiben
sekunde
stunden
tabelle
tag
zahl
zeile
zweck
-
Es gibt anscheinend ja leider kein onload attribut bei tag/tabelle">tabellenzeilen.
Gibt es eine Möglcihkeit den gleichen effekt anders zu gestatlen, das Problem ist, dass die zeilen mit php generiert werden, und ich nicht weiß wie sie heißen noch wie viele es sind.
Der SInn ist es einen Countdown starten zu lassen sobald die seite geladen ist. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Schreibe onload in das <body>.
Es ist das einzige Element, in dem onload funktioniert. -
Dann habe ich aber nicht mehr die richtigen parameter in der Funktion.
Gibt es vielleicht in jquery eine Möglcihkeit? -
Mit jquery kenne ich mich nicht aus.
Aber einige Informationen kannst du auch mit Javascript auslesen.
Hier mal ein Beispiel:<!doctype html> <html> <head> <title>Tags Zählen</title> <script type="text/javascript"> function zaehlen() { alert(document.getElementsByTagName("tr").length); } </script> </head> <body onload="zaehlen();"> <table border=1> <tr><td>Inhalt</td><td>Inhalt2</td></tr> <tr><td>Inhalt</td><td>Inhalt2</td></tr> <tr><td>Inhalt</td><td>Inhalt2</td></tr> <tr><td>Inhalt</td><td>Inhalt2</td></tr> <tr><td>Inhalt</td><td>Inhalt2</td></tr> <tr><td>Inhalt</td><td>Inhalt2</td></tr> <tr><td>Inhalt</td><td>Inhalt2</td></tr> </body> </html>
Damit findest du schonmal heraus, wie viele Zeilen es sind.
Viel mehr kann ich hier nicht helfen.
Erkläre doch noch genauer, welche Parameter die Funktion bekommt und wo man diese in html findet.
Auch Beispielcode wäre nicht schlecht.
Eine ganz andere Möglichkeit wäre Serverseitig.
Du speicherst alle Zeilen in einer Variable und gibst sie erst zum Schluss aus.
Das sieht dann etwa so aus:
$tabellenzeilen=""; while (bedingungerfuellt()) { $tabellenzeilen.="<tr>...</tr>"; } echo '<body onload="funktion(...)">'; // Du hast ja jetzt alle Infos echo $tabellenzeilen;
-
Vielleicht so:
<!doctype html> <html> <head> <title>Countdown</title> <script type="text/javascript"> function settimer(elemente,sekunde) { if (sekunde > 0) { setTimeout("settimer("+elemente+","+(sekunde-1)+");",1000); } for (var k=1; k<=elemente; k++) { document.getElementById("countdown"+k).innerHTML=sekunde; } } </script> </head> <body onload="settimer(7,20);"> <table border=1> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown1"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown2"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown3"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown4"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown5"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown6"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown7"></td></tr> </body> </html>
Die Anzahl der Elemente und damit auch der Zeilen bekommst du in PHP über:
count($dein_arrray);
-
Problem ist, dass die Ids nicht vortlaufend sind.
Ich suche eigentlich nach einer einfachen methode, den komplizierten Weg bekomm ich auch alleine hin.
Wollte aber erst mal fragen, ob jemand was einfaches parat hat.
Beitrag zuletzt geändert: 24.8.2013 18:52:46 von unlikus -
Ich hab jetzt nicht viel verändert:
<!doctype html> <html> <head> <title>Tags Zählen</title> <script type="text/javascript"> function settimer(sekunde) { if (sekunde > 0) { setTimeout("settimer("+(sekunde-1)+");",1000); } for (var k=0; k<elemente.length; k++) { document.getElementById("countdown"+elemente[k]).innerHTML=sekunde; } } </script> </head> <body onload="elemente=new Array(1,12,14,39,72,111,2369); settimer(20);"> <table border=1> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown1"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown12"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown14"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown39"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown72"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown111"></td></tr> <tr><td>Inhalt</td><td>Inhalt2</td><td id="countdown2369"></td></tr> </body> </html>
Und 9 Zeilen Skript sehe ich noch nicht als kompliziert, aber ok. -
bei deiner Version müsste ich mein php array 2 mal allein im template durchgehen.
ich überlege mir selbst noch mal was, was für meine zwecke am besten geeignet ist.
Wie gesagt, ich wollte nur fragen, ob es einen kurzen befehl oder so was gibt, womit mein code schlank bleiben würde.
Aber kurze andere Frage: Gibt es eine (native) Javascript(jquery funktion mit der man secunden in einen string mit tagen, studnen, minuten, secunden umrechnen kann.
Wenn nicht, einen algrorithmus hab ich schon, muss sich also keiner die Mühe machen, eine ganze Javascript funktion zu schreiben :) -
ich habe irgendwie nicht verstanden was Du erreichen willst
warum in jeder Zeile ein onload?
PHP ist Server seitig und und Javascript Client seitig
also kannst Du nicht davon ausgehen das die erste Zeile auch zuerst da ist oder das nicht alle gleichzeitig geladen werden
Javascript ausführen sobald das Dokument fertig ist geht mit jQuery so
$( document ).ready(function() { });
da ich nicht genau weiß was Du machen willst, kann ich Dir nicht weiter helfen
vielleicht wäre es auch besser die Tabelle in Javascript zu generieren -
Es ging mir beim in jeder Zeile ein onload nur darum, dass dort javascript mit einem eventhandler ausgeführt wird.
Bei einem onload vom body hat man ja unter anderem das Problem, dass man nicht mit this am das elemnt zugreifen kann, man irgentwie wissen muss wie die ids der zeilen heißen und so weiter.
Hab es jetzt übrigens gelöst:
Den zeilen eine classe gegeben auftrag_tr
$(document).ready(function(){ $(".auftrag_tr").each(function(){ auftrag_countdown($(this).attr("data-id"),false) }); });
mit jquery für jede Spalte eine Funktion aufgerufen die als Timerfungiert
fals wer bruacht:
formatiert eine anzahl von Sekunden
function formatsec(sec) { var rest_bei_tage=sec%86400; var tage=(sec-rest_bei_tage)/86400; var rest_bei_stunden=rest_bei_tage%3600; var stunden=(rest_bei_tage-rest_bei_stunden)/3600; var rest_bei_minuten=rest_bei_stunden%60; var minuten=(rest_bei_stunden-rest_bei_minuten)/60; var secunden=rest_bei_minuten; if(tage==0) { var stag=''; } if(tage==1) { var stag='1 Tag '; } if(tage>1) { var stag=tage+' Tage '; } return stag+mach_zweistellig(stunden)+':'+mach_zweistellig(minuten)+':'+mach_zweistellig(secunden); } function mach_zweistellig(zahl) { if(zahl<10) { zahl = '0' + zahl.toString(); } return zahl; }
kann geschlossen werden -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage