IE / Mozilla bei JS

  • #1
S

Sempervivum

Bekanntes Mitglied
Themenersteller
Dabei seit
30.07.2005
Beiträge
114
Reaktionspunkte
0
Ort
Sickte am Elm
Liebe Webentwickler,
ich habe Skripte gesehen, die die Funktion getElementById() verwenden und sowohl im IE als auch bei Mozilla laufen - ohne dass browserspezifische Eigenschaften abgefragt werden. Bei meinem will das aber nicht funktionieren:
http://www.ulrichbangert.de/tmp/flyin/flyin3.html
IE meldet in Zeile 68 Zeichen 5 einen Fehler (aber in Zeile 67 nicht). Was mache ich falsch? Habe das Problem dann so gelöst:
http://www.ulrichbangert.de/tmp/flyin/flyin6.html
(Funktion init()) aber würde gern wissen, ob es nicht einfacher geht.
Viele Grüße - Ulrich
 
  • #2
Keiner ein Idee? Oder hätte ich nicht nur die Skripte posten sollen?
Anlegen einer Liste mit Objekten:
Code:
obj[i] = document.getElementById(ids[i]).style
Dann positionieren:
Code:
Zeile 67: obj[i].position = absolute
Zeile 68: obj[i].left = startpos[i]
Fehler links in Zeile 68, aber nicht in 67.
Meine Lösung:
Code:
  if (document.all) {
   obj[i] = eval (ids[i] +->.style') // IE
   } else {
   obj[i] = document.getElementById(ids[i]).style // Mozilla
   }
Mit Firefox funktioniert es in der ersten Version. Wie gesagt, ich habe Skripte gesehen ohne die Abfrage einer browserspezifischen Eigenschaft, die auch mit IE gehen.
Gruß - Ulrich
 
  • #3
Ich nehme für sowas immer diese Dreamwever Funktion zum Objekt suchen

Code:
// Object finden
function MM_findObj(n, d) { //v4.01
 var p,i,x; if(!d) d=document; if((p=n.indexOf(?))>0&&parent.frames.length) {
  d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
 if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
 for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
 if(!x && d.getElementById) x=d.getElementById(n); return x;
}

Jetzt kannst du deine Objekte, egal welcher Browser, ganz einfach ansprechen.

Code:
obj[i] = MM_findObj(ids[i]);
obj[i].style.position = absolute;
obj[i].style.left = startpos[i];

oder

Code:
obj[i] = MM_findObj(ids[i]);
obj[i].style.position = absolute;
obj[i].style.left = eval(startpos[i]);
 
Thema:

IE / Mozilla bei JS

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben