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
Der Code zum hinzufügen der Reihe an sich:
function addDownload(filename, filesize) {
var table = document.getElementById("download_table");
var body = table.getElementsByTagName("tbody")[0];
var tr = document.createElement("tr");
var td1 = document.createElement("td");
td1.appendChild(document.createTextNode(filename));
var td2 = document.createElement("td");
td2.appendChild(document.createTextNode(filesize));
//Definieren des Progressbalkens
var td3 = document.createElement("td");
var container = document.createElement("div");
var bar = progressbarGui(container);
td3.appendChild(container);
var td4 = document.createElement("td");
var button = document.createElement("input");
button.setAttribute("type","button");
button.setAttribute("Value", ". . .");
td4.appendChild(button);
var td5 = document.createElement("td");
td5.appendChild(document.createTextNode("downloading"));
td1.setAttribute("width", "40%");
td2.setAttribute("width", "10%");
td3.setAttribute("width", "30%");
td4.setAttribute("width", "10%");
td5.setAttribute("width", "10%");
tr.appendChild(td1);
tr.appendChild(td2);
tr.appendChild(td3);
tr.appendChild(td5);
tr.appendChild(td4);
tr.setAttribute("id", filename);
tr.setAttribute("onclick", "markRow(this)");
tr.setAttribute("style", "background:rgb(245, 245, 245)");
//bar.set_percantage(80);
tr.ready = function() {
var i = 0;
var intervall = window.setInterval(function() {
if(i >= 100) {
window.clearInterval(intervall);
}
bar.set_percantage(i);
++i;
},100);
}
body.appendChild(tr);
}
Alles anzeigen
und zuletzt noch der Progessbar:
function progressbarGui(container) {
var progressbar = document.createElement("div");
var bar = document.createElement("div");
var text = document.createElement("div");
progressbar.style.width = "100%";
progressbar.style.height = "20px";
bar.className = "progress";
progressbar.appendChild(bar);
text.style.marginTop = "-19px"
text.style.textAlign = "center";
text.style.textSize = "15px";
text.appendChild(document.createTextNode("0%"));
progressbar.appendChild(text);
container.appendChild(progressbar);
this.set_percantage = function(percantage) {
bar.style.width = percantage + '%';
}
}
Alles anzeigen
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.