animieren eines erzeugten <div> Ladebalkens

  • Hallo,

    ich habe folgendes Problem, und zwar besitze ich eine Tabelle, in welcher ich "dynamisch" Downloads hinzufügen kann.
    Damit das ganze auch etwas ansprechender aussieht, habe ich eine <div> Progressbar in die Tabelle mit übernommen, da super Schrott Browser ala IE
    mit dem Progessbar noch nicht so wirklich zurechtkommen (unter XP auf jedenfall).

    hatte mir dazu ein eigentlich recht gutes zutorial angeguckt(tutorialreihe):
    http://www.youtube.com/watch?v=XjCjbRWX38c&feature=relmfu

    nach ewiger Sucherei hab ich mich nun entschieden mal nachzufragen.

    erst einmal der Code:

    Der Button zum hinzufügen der Reihe in die Tabelle

    HTML
    <input type="button"; onclick="isChecked()"; value="Add Download">

    Der Code zum hinzufügen der Reihe an sich:

    und zuletzt noch der Progessbar:

    Hatte schon versucht, mit tr.onload oder tr.ready einen Effekt ala window.onload zu erzeugen, sprich nachdem die Reihe fertig in das HTML Dokument geladen wurde das Intervall zu starten.
    Hoffe da gibt es eine Lösung zu, wobei ich denke, dass sie recht einfach ist und ich nur gerade nicht darauf komme.

  • habe den Balken mittlerweile animiert bekommen, indem ich das ausgelagerte div Element, welches den Balken darstellt wieder in das hinzufügen der Reihe gelegt habe, dabei habe ich nun ein weiteres Problem. Erst einmal der Code:

    Habe nun unten ein einfach ein normales Intervall erstellt, welches den Ladebalken animiert.
    Nun habe ich das Problem, dass beim erzeugen eines Elements sich jedes Intervall nur auf ein Div Element bezieht.
    Ein Beispiel:
    Ich füge erst eine Reihe hinzu, der "Ladebalken" bewegt sich dabei langsame von 0% - 100%, dabei ist alles richtig.
    Füge ich nun noch eine weitere Reihe hinzu, arbeitet das letzte Intervall am neu erstellten "Ladebalken" mit und somit springt dieser immer in der Größe und Prozentzahl.

  • ja so ein vorhaben ist ein klasse beispiel für ein jQuery-Plugin :)

    was genau meinst du mit springen?

    ich vermute mal, dass du (weil du keinen namespace/objektbereich hast) die variablen der beiden ladebalken überschreibst und somit kommt eine fehlfunktion zustande

    du brauchst hier wohl eher nen objektorientierten ansatz für "normales" javascript oder eben ein jquery-plugin

  • Da meine JQuery Kentnisse leider nur extrem begrenzt sind, würde ich gerne fragen, wie ich es denn bewerkstelligen soll, oder ob es gute Tutorials dazu gibt?

  • gute tutorials.. definiere gut..^^
    also tuts gibt es massig, nur gut.. naja das ist was anderes. wenn du mit jQuery noch keinerlei erfahrung hast, dann isses echt nicht einfach dir dir grundlagen so fix zu vermitteln, dass du deinen ladebalken bauen kannst.
    eine gut plugin-basis findest du hier:
    http://www.jquery-board.de/threads/1867-%…full=1#post7210
    wie man ein plugin schreibt findest du auch dort und auch bei jquery selber.
    wenn du es aber einmal verstanden hast, willst du nur noch plugins basteln :)

  • ok dann danke erst einmal, ich werde mal versuchen mich hineinzulesen in die Materie :wink: .
    Hab halt grad erst ne Asubildung angefangen und hatte vorher noch nie was mit JS, HTML5 am Hut :grin:

  • hey, kein ding.. aber eine frage hab ich da dennoch :)

    wo ist der sinn eines ladebalkens, der einem einfach nur von 0 auf 100% zählt? ich mein das is doch nur dann wirklich effizient, wenn man damit einen echten zeitraum darstellt oder ein echtes datenvolumen..
    so is der balken doch nichtssagend oder irre ich mich etwa?

  • ja da hast du recht, der Balken ist im moment noch nichtssagend, und es ging mir am Anfang nun erst einmal darum jeden Balken zu animieren.
    Nun habe ich aber leider ein anderes Problem, denn wenn ich diese Elemente erstellt habe, werden sie doch zu DOM Elementen der Tabelle.
    Ich versuche nun mit folgenden Code Zeilen per click auszuwählen.(jedem <tr> Element gebe ich diese Methode durch das Event onclick mit).
    Dadurch möchte ich nachher nur eine Zeile ausgewählt haben, in welcher ich den Ladebalken stoppen und wieder starten kann, nun zur Frage:
    Ich referenziere hier ja nur die DOM Objekte wenn ich das richtig verstehe, aber in keinem Fall den Ladebalken, wie kann ich diesen Zugriff erreichen? Auch nur per JQuery?
    der Code zum auswählen einer Zeile in der Tabelle:

    Und wie gesagt der Balken macht noch nichts, es geht mir erst einmal darum, dass ich die Elemente steuern kann, wenn dies der Fall ist müsste ich sie nur noch mit Datenwerten füttern.

    Edit :

    Die Change Status Methoden ändern nur den Status der Buttons Cancel,Pause und Resume von Enabled auf Disabled, falls eine Zeile ausgewählt ist, oder nicht.

    Edit2 :

    Der vllt noch benöigte Code für den Download.

    2 Mal editiert, zuletzt von jungspund (21. August 2012 um 13:30)

  • Ist zwar erledigt, aber da ich zur Zeit so begeistert von Twitter Bootstrap bin, da gibt es auch schöne Progress Bars. Fortschritt einfach durch javascript-seitige Aktualisierungen der width von div.bar
    http://twitter.github.com/bootstrap/components.html#progress

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook