getElementByID(variable)
Frank Czichos
- javascript
Hallo, habe folgendes Problem:
Ein Textbereich wird mit
<div id="1" style="display:none" >
</div>
umklammert. Eine Funktion soll bei einem Ereignis, z. B. onCklick, style="display:none" in style="display:block" umwandeln und somit den Textbereich einblenden.
Das klappt, wenn man die id direkt angibt, z. B. mit
function alleausklappen(aus)
{
document.getElementById(1).style.display='none' ;
}
Sobald ich das Ganze mit einer Schleife versehe, um mehrere Bereiche zu verändern, geht es jedoch leider nicht.
function alleausklappen(aus)
{
var i=1;
for (i=1;i<document.getElementByID;++i) document.getElementById(i).style.display='none' ;
}
Was mache ich falsch?
Vielen Dank für Hilfe. Gruß, Frank
Hi,
<div id="1" style="display:none" >
ids dürfen nicht mit Ziffern beginnen.
</div>
Eine Funktion soll bei einem Ereignis, z. B. onCklick, style="display:none" in style="display:block" umwandeln und somit den Textbereich einblenden.
onclick nur mit einem ck.
Das klappt, wenn man die id direkt angibt, z. B. mit
function alleausklappen(aus)
{
document.getElementById(1).style.display='none' ;
1 ist immer noch keine gültige Id.
}
Sobald ich das Ganze mit einer Schleife versehe, um mehrere Bereiche zu verändern, geht es jedoch leider nicht.
function alleausklappen(aus)
{
var i=1;
for (i=1;i<document.getElementByID;++i)
i < document.getElementByID ?
document.getElementByID dürfte nicht existieren...
document.getElementById(i).style.display='none' ;
Nummern sind immer noch keine gültigen Ids.
}
Was mache ich falsch?
Du benutzt ungültige Ids und ein seltsames Objekt.
cu,
Andreas
Hi,
<div id="1" style="display:none" >
ids dürfen nicht mit Ziffern beginnen.
Danke für die Antwort. Wenn IDs nicht mit Ziffern beginnen dürfen, "verzeihen" die Browser auf jeden Fall den Fehler, da
Das klappt, wenn man die id direkt angibt, z. B. mit
function alleausklappen(aus)
{
document.getElementById(1).style.display='none' ;
Aber ich werde es mit ID-Namen ("Test1") versuchen, allerdings ist dann keine Möglichkeit mehr da, das Ganze zu automatisieren, oder? Dann müßte ich ja so viele fast gleichlautenden Funktionen schreiben, wie ich Fälle habe....
document.getElementByID dürfte nicht existieren...
Was meinst Du damit? Es existiert aber ... :-)
Gruß, Frank.
hi
Aber ich werde es mit ID-Namen ("Test1") versuchen, allerdings ist dann keine Möglichkeit mehr da, das Ganze zu automatisieren, oder? Dann müßte ich ja so viele fast gleichlautenden Funktionen schreiben, wie ich Fälle habe....
doch:
for(i=1,i<x;i++)
{
temp="test" + 1;
document.getElementById(temp)[...............]
}
document.getElementByID dürfte nicht existieren...
Was meinst Du damit? Es existiert aber ... :-)
document.getElementById=nimm in diesem dokument das element mit der id ... ja welche? und was damit tun?
das meint er damit
Gruß, Frank.
gruß
hi
Aber ich werde es mit ID-Namen ("Test1") versuchen, allerdings ist dann keine Möglichkeit mehr da, das Ganze zu automatisieren, oder? Dann müßte ich ja so viele fast gleichlautenden Funktionen schreiben, wie ich Fälle habe....
doch:
for(i=1,i<x;i++)
{
sorry, anstatt der 1 muss natürlich das i stehen:
temp="test" + i;
document.getElementById(temp)[...............]
}document.getElementByID dürfte nicht existieren...
Was meinst Du damit? Es existiert aber ... :-)
document.getElementById=nimm in diesem dokument das element mit der id ... ja welche? und was damit tun?
das meint er damit
Gruß, Frank.
gruß
sorry, anstatt der 1 muss natürlich das i stehen:
temp="test" + i;
document.getElementById(temp)[...............]
}
Leider geht das auch nicht. Kann das sein, dass ihr einfach weitere Ideen reinschreibt, diese aber vorher nicht ausprobiert?
Ich bin beim alten Problem, wie anfänglich geschildert:
Unter Verwendung der direkten id-Nennung (neu jetzt "m1") in der Zeile
document.getElementById("m1").style.display='block' ;
wird im <div id="m1"> </div> - Bereich tatsächlich der Text auch angezeigt ... style.display='block'
Unter Verwendung einer Variablen:
temp="";
for(i=1;i<20;i++) temp="m" + i;
document.getElementById(temp).style.display='block' ;
(...)
werden die Bereiche mid der id="m1" .... id=""m19" nicht verändert!
Also, irgendwo der Wurm drin....
Gruß, Frank.
Hi,
Leider geht das auch nicht. Kann das sein, dass ihr einfach weitere Ideen reinschreibt, diese aber vorher nicht ausprobiert?
Was soll der Vorwurf? Du bist zu blöd zum Abtippen!
for(i=1;i<20;i++) temp="m" + i;
Du setzt in der Schleife zwanzig mal die Variable temp (auf die Werte m1, m2, m3....
und NACH der Schleife setzt Du hier für m19 die Property display auf block.
document.getElementById(temp).style.display='block' ;
Wenn Du mehrere Statements in einer Schleife haben willst, mußt Du sie mit { und } klammern. So wie es Dir Sorgenkind Mech vorgekaut hat.
Du bist nicht in der Lage, die Dir gegebenen Lösungen abzuschreiben, und dann beschwerst Du Dich noch, daß die Helfenden nicht testen würden. Meinst Du, daß Du damit die Leute zum Helfen motivierst?
Daß mehrere Statements für die Schleife geklammert werden müssen, ist absolutes Grundlagenwissen. Und das wird in diesem Forum eigentlich vorausgesetzt - lies mal auf der Übersichtsseite ganz oben!
cu,
Andreas
Was soll der Vorwurf? Du bist zu blöd zum Abtippen!
Du bist nicht in der Lage, die Dir gegebenen Lösungen abzuschreiben, und dann beschwerst Du Dich noch, daß die Helfenden nicht testen würden. Meinst Du, daß Du damit die Leute zum Helfen motivierst?
Daß mehrere Statements für die Schleife geklammert werden müssen, ist absolutes Grundlagenwissen. Und das wird in diesem Forum eigentlich vorausgesetzt - lies mal auf der Übersichtsseite ganz oben!
Lieber Andreas,
große Schelte - aber berechtigt.
Obwohl ich nicht ganz unerfahren in anderen (älteren) Sprachen bin und auch sonst nicht ganz blöd bin, tue ich es mir mit dem Verständis der objektorientiereten Sprachen und dem Syntax von JavaScript schwer. Da hat auch bisher intensives Lesen in diesem Forum, der Kapitel auf dieser Homepage und dicke Literatur mich nicht davor bewahrt, diesen "Anfänger"-Fehler mit der fehlenden Klammer zu machen.
Insbesondere was den Unterbereich "Javascript" in diesem Forum angeht, ist er meiner Ansicht nach nicht für Anfänger bzw. für mich geeignet. Ich stoße wohl an die Grenzen des selbstorganisierten Lernens - ich brauche wohl eher einen Kurs oder einen Tutor oder so.
Sorry wegen meinem Vorwurf, wollte hier niemanden verärgern. Bin nach einem halben Tag rumbasteln nun wahrscheinlich selbst genervt, wenn dann die gutgemeinten Tips auch nicht klappen, kann man schon verzweifeln.
Nun gut, zumindest hat Dein letzter Tip mir jetzt sehr weitergeholfen.
Werde dann morgen an den übrigen Herausforderungen weiterbasteln.
Nochmals sorry und vielen Dank,
cu Frank.
Hi,
Aber ich werde es mit ID-Namen ("Test1") versuchen, allerdings ist dann keine Möglichkeit mehr da, das Ganze zu automatisieren, oder? Dann müßte ich ja so viele fast gleichlautenden Funktionen schreiben, wie ich Fälle habe....
Das hat das Sorgenkind schon erklärt.
document.getElementByID dürfte nicht existieren...
Was meinst Du damit? Es existiert aber ... :-)
document.getElementById (kleines d) existiert (und ist die Methode, die Du ja benutzt, um das Element über die Id zu holen).
Es mag zwar sinnvoll sein, auf dessen Existenz zu prüfen, aber nicht, ob diese Methode größer ist als eine Zahl (dein i).
Und document.getElementByID (großes D) ist zumindest kein mir bekanntes Sub-Objekt unter document. Mag ja sein, daß DU das definiert hast, dann aber in einem Teil des Scripts, den Du uns nicht gezeigt hast (und wenn Du das tatsächlich definiert hast, hast Du einen seltsamen Geschmack, was Namen für Objekte angeht).
cu,
Andreas