Was mir auf Anhieb auffällt, vielleicht liegt der Kernfehler woanders:
var form = document.getElementsByTagName('form')[0];
Kürzer: document.forms[0]
var left = parent.document.getElementById('upload_left');
var right = parent.document.getElementById('upload_right');
var iframe = parent.document.getElementsByTagName('iframe')[parent.upcount];
Kürzer:
var doc = parent.document,
left = doc.getElementById('upload_left'),
...;
parent.upcount++;
form.style.display="none";
form.submit();
Ich weiß nicht, ob alle Browser es erlauben, dass File-Upload-Formular per JavaScript abgesendet werden können?!
right.innerHTML='<div style="width:75px; height:75px; float:left; margin:2px 2px 0px 0px; background:url(images/loading.gif) center no-repeat;"> </div>'+right.innerHTML;
Wie wärs mit einem img-Element anstelle eines leeren divs?
var newform = document.createElement('<iframe>');
Das muss document.http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=createElement('iframe') lauten, du notierst hier keinen Start-Tag, sondern den Elementnamen als String.
newform.setAttribute('allowtransparency','true');
newform.setAttribute('frameborder','0');
newform.setAttribute('src','imageupload.php');
newform.setAttribute('class','imageupload');
Attribute solltest du besser mit dem Schema element.attribut = "wert" setzen, also newform.src = "...", newform.className = "..." usw. Manche Browser wie IE tun sich mit der setAttribute-Schreibweise schwer.
var searchstring = eval("/loading.gif/i");
Das eval hier ist unnötig, wenn du einen regulären Ausdruck notieren willst, kannst du einfach folgendes schreiben:
var searchstring = /loading.gif/i;
Das \ vor dem Punkt ist nötig, weil . sonst in einem regulären Ausdruck "beliebiges Zeichen" bedeutet.
for(i=0; i<div.length; i++){
Du solltst var i schreiben, damit i keine globale Variable ist.
Einfacher:
var divs = right.getElementsByTagName('div');
for (var i = 0, div; div = divs[i]; i++) {
if (searchstring.test(div.style.background)) {
div.style.background = "...";
}
}
Mathias