[JavaScript] GetElementById ansprechen

oDeM

Lt. Junior Grade
Registriert
Sep. 2002
Beiträge
374
[JS]GetElementById ansprechen

Hi,
ich hab folgende Funktion geschrieben

Code:
function menu(idName) {
  //for(var i=0;i<=3;i++) {
    if(document.getElementById(idName).style.display == "inline")
      document.getElementById(idName).style.display = "none";    
    else
      document.getElementById(idName).style.display = "inline";    
  //}
}

Mit der For-Schleife (im Moment auskommentiert) will ich die einzelnen id-Elemente ansprechen (á la getElmentById(idName)). Allerdings klappt das nicht und ich hab bei selfHTML keine Infos bezüglich getElementByid gefunden wie bzw. ob das überhaupt geht.
Also meine Frage:
Geht das überhaupt? Wenn ja wie, wenn nein was kann ich ändern?

MfG
oDeM ;)
 
inwiefern geht es nicht !?

bekommst du 'ne Fehlermeldung vom Debugger !?
 
Es geht in sofern nicht, dass das script nicht funkioniert ;)

Wie soll ich denn den debuger benutzen?
Ich bin ja auch ein JS Neuling...
 
funktioniert es denn, wenn du ein konkretes element mit getElementById ansprechen willst?
 
Japp funktioniert!
Ich hab das Problem mittlerweile auch selbst gelöst ... mußte halt nurn bischen umdenken.
Hab irgendwo gelesen, dass die id's nicht gleich sein "sollten" wenn man W3C konform proggen will.
Also hab ich einfach den Link Test und die Menüpunkte Test+i genannt -> Test1,Test2 etc.

ichhab den code jetzt nicht auf diesem rechner, aber ich glaube ich habs folgendermaßen gelöst:

Code:
function menu(idName) {
  for(var i=0;i<=3;i++) {
    var name = idName+i;

    if(document.getElementById(name).style.display == "inline")
      document.getElementById(name).style.display = "none";    
    else
      document.getElementById(name).style.display = "inline";    
  }
}

bin jetzt nicht 100%ig sicher, habs auch nimmer getestet, aber so müßte es gehen

MfG

oDeM :)
 
Folgendermaßen:

Code:
<table border="0" ...>
  <tr id="Test">
    <td><a href="javascript:menu('Test');">klick mich</a></td>
  </tr>
  <tr id="Test1" style="display:none;">
    <td></td>
  </tr>
  <tr id="Test2" style="display:none;">
    <td></td>
  </tr>
  <tr id="Test3" style="display:none;">
    <td></td>
  </tr>
</table>

Soviel zum Menü.
Angezeigt wird jetzt nur klick mich

mit der Funktion

Code:
function menu(idName) {
  for(var i=0;i<=3;i++) {
    var name = idName+i;

    if(document.getElementById(name).style.display == "inline")
      document.getElementById(name).style.display = "none";    
    else
      document.getElementById(name).style.display = "inline";    
  }
}

spreche ich jede id mit dem Namen name an.
var name ist aber -> Parameter (idName) + i (wobei i 0-3 ist [for-schleife])

Also werden Test1,Test2 und Test3 ausgeblendet bzw. eingeblendet.
Ich hab leider nur noch keine variable Endbedingung gefunden, die zählt wieviele ids
es gibt :(

Aber ist nicht so schlimm eigentlich....

Ich hoffe du verstehst es jetzt!


MfG
oDeM ;)
 
aha. sieht aber nicht gerade danach aus, als ob das alles im sinne des erfinders wäre.

wie sah denn zuvor der funktionsaufruf aus?
 
Wieso das denn nicht?
Es funktioniert einwandfrei!

Vorhet hab ich allen SubMenüs bspweise die id submenu gegeben.
dann wollte ich versuchen die mit der for-schleife per submenu anzusrechen.
das geht mit dem getElementbyid aber scheinbar nicht ... deswegen hab ichs so gelöst.

ich finde die methode noch nicht mal schlecht, da man jedemeinzelenen Menü ne eigene id vergibt.
wie gesagt hab irgendwo gelesen, dass es eh nicht W3C konform ist wenn man allen id's den gleichen namen gibt
 
na dann is alles klar. wenn man für mehrere dinge die id submenu vergibt kann etElementById ja auch gar nicht gehen, wie auch? jede variable und jedes objekt muss man eindeutig ansprechen können - dann klappts auch mit dem nachbar ;)

greets, weird :rolleyes:
 
Zurück
Oben