id im JavaScript dynamisch auswählen
Frank
- javascript
Hi,
ich hab folgendes Problem
kann ich in folgendem Javascript-Text
"document.all.idname.innerHTML = ..."
die Stelle "idname" dynamisch verändern ??
Oder kann man id s auf einer seite mit index versehen ??
Is vielleicht nich besonders gut erklärt aber vielleicht weiß ja jemand was ich meine.
Danke Frank
P.S. schaut euch mal www.BundyFan.de an
Hi Du,
kann ich in folgendem Javascript-Text
"document.all.idname.innerHTML = ..."
die Stelle "idname" dynamisch verändern ??
Einfachste und ziemlich universelle, wenn auch nicht in jedem Fall optimale aber für Deine Frage passende Lösung:
objName = 'foo'; // z.B. halt
eval('document.all.' + objName + '.innerHTML = "hallo"');
Oder kann man id s auf einer seite mit index versehen ??
Da wäre es geschickter zu wissen, was es denn für eine Element ist...
Mirko
DANKE
eval('document.all.' + objName + '.innerHTML = "hallo"');
diese methode funktioniert.
Ich bin begeistert.
ff
gruss Frank,
kann ich in folgendem Javascript-Text
"document.all.idname.innerHTML = ..."
die Stelle "idname" dynamisch verändern ??
meinst Du so etwas wie eine parameteruebergabe
bei funktionen ? antwort="ja" : antwort="nein"
Oder kann man id s auf einer seite mit index versehen ??
indizes benoetigst Du nicht unbedingt, denn Du benennst
doch Deine divsbzw Deine layer - oder?
Is vielleicht nich besonders gut erklärt aber vielleicht
weiß ja jemand was ich meine.
hilft das hier weiter?:
function manageDiv(divName,text)
{if (document.getElementById)
{document.getElementById(divName).innerHTML = text;}
else
{if (document.all)
{document.all.tags("div")[divName].innerHTML = text;}
if (document.layers)
{document.layers[divName].document.open();
document.layers[divName].document.write(text);
document.layers[divName].document.close();
} } }
ausserdem koenntest Du noch mit der methode "eval()" arbeiten
dann saehe das ganze fuer (document.layers/all) so aus:
function manageDiv(divName,text)
{if (document.all)
{eval("document.all."+divName+".innerHTML = "+text);}
if (document.layers)
{eval("document."+divName+".document.open()");
eval("document."+divName+".document.write("+text+")");
eval("document."+divName+".document.close()");
} }
alles klar? - by(t)e by(t)e - peterS. - pseliger@gmx.net
Hi peterS
indizes benoetigst Du nicht unbedingt, denn Du benennst
doch Deine divsbzw Deine layer - oder?
Von Layern war ja gar nicht die Rede, oder? Auch andere Elemente haben die Eigenschaft innerHTML.
function manageDiv(divName,text)
{if (document.getElementById)
{document.getElementById(divName).innerHTML = text;}
else
{if (document.all)
{document.all.tags("div")[divName].innerHTML = text;}
if (document.layers)
{document.layers[divName].document.open();
document.layers[divName].document.write(text);
document.layers[divName].document.close();
} } }
Hmm.. ist aber eher unperformant. Da wird ja bei jedem Aufruf neu gecheckt, welches Objekt der Browser nun kennt. Meine Wenigkeit macht das immer so:
if (document.layers) setText = function setText(name, txt) // writes text into a stylesheet
{ document.layers[name].document.open();
document.layers[name].document.write(txt);
document.layers[name].document.close();}
else if (document.all) setText = function setText(name, txt)
{ document.all.tags("div")[name].innerHTML = txt;}
else if (document.getElementById) setText = function setText(name, txt)
{ document.getElementById(name).innerHTML = txt;}
else setText = function setText() {};
Da wird die Funktion einmal am Anfang zugewiesen und fertig ist die Laube :).
ausserdem koenntest Du noch mit der methode "eval()" arbeiten
dann saehe das ganze fuer (document.layers/all) so aus:
Also, wenn man schon weiß, dass es Layer sind, warum dann so unperformant mit eval arbeiten?
Mirko
gruss Mirko,
>> Von Layern war ja gar nicht die Rede, oder? Auch andere
>> Elemente haben die Eigenschaft innerHTML.
richtig - deswegen hatte ich die funktion meines schnell
zusammengeschusterten beispiels ja auch erst "manageElement()"
genannt - aber da ich glaube, das es dem fragesteller wirklich
nur um layer/divs ging und es mir wiederum nur darauf ankam,
diesem die unterschiedlichen zugriffsweisen zu veranschaulichen
blieb der code halt primitiv oder *g* >>aber eher unperformant<<
*g* entschuldige bitte *g*
und trotzdem ist im bsp. alles enthalten, was der nutzer spaeter
fuer sich nutzen, abwandeln, und tunen kann:
bsp.: document.all.tags("div")[divName].innerHTML
wenn mein fragesteller spielfreude an den tag legt,
nimmt er sich diese stelle vor ".tags('div')" und
spielt damit; wenn nicht, waere jeder getunte code
nicht den aufwand wert gewesen;
- by(t)e by(t)e - peterS.