Robert Hilbe: ID mit Javascript wechseln

Liebe Forumsteilnehmer

Für die Gestaltung dynamischer Elemente mit CSS suche ich ein Skript, das die ID eines Objekts durch Klick auf einen Link austauscht. Das Skript sollte wie ein Schalter funktionieren: Beim ersten Click wird die ID ersetzt (z.B "navigation" > "navigation1"), beim zweiten wieder zurück getauscht ("navigation1" > "navigation") usw.

Kennt jemand von Euch eine Lösung?

Mit freundlichen Grüssen
Robert Hilbe

  1. Hallo Robert,

    Für die Gestaltung dynamischer Elemente mit CSS suche ich ein Skript, das die ID eines Objekts durch Klick auf einen Link austauscht.

    das geht afaik nicht - du könntest aber dem Element eine andere Klasse zuordnen (mit document.getElementById('nav').className = '...';).

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo Robert,

      Für die Gestaltung dynamischer Elemente mit CSS suche ich ein Skript, das die ID eines Objekts durch Klick auf einen Link austauscht.
      das geht afaik nicht -

      Warum denn nicht?
      Notfalls könnte man ja, mit Dom, den Inhalt des Objekts zwischenspeichern, das Objekt löschen, und ein neues Objekt mit der neuen ID einfügen und den inhalt diesem Objekt zuordnen...
      Oder aber (müsste doch gehen, oder?) mittels setAttribute einfch neue ID geben...

      Gruss
      Schorsch

      1. Hallo Schorsch,

        Für die Gestaltung dynamischer Elemente mit CSS suche ich ein Skript, das die ID eines Objekts durch Klick auf einen Link austauscht.
        das geht afaik nicht -
        Warum denn nicht?

        ich sagt doch "afaik nicht" - ich weiß schießlich nicht alles :-)

        Notfalls könnte man ja, mit Dom, den Inhalt des Objekts zwischenspeichern, das Objekt löschen, und ein neues Objekt mit der neuen ID einfügen und den inhalt diesem Objekt zuordnen...
        Oder aber (müsste doch gehen, oder?) mittels setAttribute einfch neue ID geben...

        es geht vielleicht - aber sinnvoll ist es imho nicht. Mit einer ID soll man ja schließlich ein Element eindeutig identifizieren werden können, und wenn man diese ID dann auf einmal ändert geht das nicht mehr - weswegen ich es bevorzugen würde die Klasse und nicht die ID zu ändern.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. Salutti

          es geht vielleicht - aber sinnvoll ist es imho nicht. Mit einer ID soll man ja schließlich ein Element eindeutig identifizieren werden können, und wenn man diese ID dann auf einmal ändert geht das nicht mehr -

          zumindest nicht mehr unter der alten ID...

          weswegen ich es bevorzugen würde die Klasse und nicht die ID zu ändern.

          Das würde ich auch so machen. Dünkt mich auch die bessere Lösung.

          Gruss
          Schorsch

          1. Hi,

            es geht vielleicht - aber sinnvoll ist es imho nicht. Mit einer ID soll man ja schließlich ein Element eindeutig identifizieren werden können, und wenn man diese ID dann auf einmal ändert geht das nicht mehr -

            zumindest nicht mehr unter der alten ID...

            Im vorliegenden Fall ist es imho nicht sinnvoll.
            In anderen Fällen ist es imho sogar notwendig, z.B. beim Klonen von Objekten, die eine ID besitzen :

            var neuesOBJEKT=OBJEKT.cloneNode(true);

            jetzt existieren 2 Objekte mit der gleichen ID, um sie eindeutig identifizieen zu können sollte man also besser die ID des erzeugten Objektes ändern:

            neuesOBJEKT.id='neueID';

            weswegen ich es bevorzugen würde die Klasse und nicht die ID zu ändern.

            Das würde ich auch so machen. Dünkt mich auch die bessere Lösung.

            Dem schließe ich mich an.

            gruß
            ptr

            1. Liebe Leute

              Vielen Dank für Eure Anregungen. Leider ist noch keine Lösung dabei, die mich zufriedenstellt. Vielleicht kann ich der Diskussion mit meinem bisherigen Arbeitsstand einen neuen Impuls geben.

              Ich habe bereits ein Skirpt, das die ID wechselt:

              function changeId(from,to)
               {
               if (document.getElementById)
                {
                document.getElementById(from).id=to;
                }

              if (document.all && !document.getElementById)
                {
                for (i=0;i<document.all.length;i++)
                 {
                 if (document.all[i].id==from)
                  {
                  document.all[i].id=to;
                  }
                 }
                }

              }

              Ich möchte aber, dass dieses Skript wie ein Schalter funktioniert und beim Aufrufen zwischen zwei IDs wechselt (z.B. "navigation" <> "navigation1"). Mein Problem liegt darin abzufragen, ob ein Element mit einer bestimmten Id bereits existiert. Wenn mir jemand diesen konkreten Baustein liefern könnte, wäre ich sehr glücklich ;-)

              Liebe Grüsse
              Robert

              1. Hi,

                Ich möchte aber, dass dieses Skript wie ein Schalter funktioniert und beim Aufrufen zwischen zwei IDs wechselt (z.B. "navigation" <> "navigation1"). Mein Problem liegt darin abzufragen, ob ein Element mit einer bestimmten Id bereits existiert. Wenn mir jemand diesen konkreten Baustein liefern könnte, wäre ich sehr glücklich ;-)

                Hmm, bin ich auf dem falschen Pferd, oder ist das nicht *zu* trivial? Mach doch eine neue Funktion toggleID(id0,id1) und frag darin ab

                if(document.getElementById(id0)) changeId(id0,id1)
                else if(document.getElementById(id1)) changeId(id1,id0)

                Gruß, Cybaer

                --
                Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Frohe Ostern Robert,

    Für die Gestaltung dynamischer Elemente mit CSS suche ich ein Skript, das die ID eines Objekts durch Klick auf einen Link austauscht.

    Prinzipiell ist die ID eines Elementes in neueren Browsern änderbar.
    http://selfhtml.teamone.de/javascript/objekte/htmlelemente.htm#universaleigenschaften
    Folgendes würde also Deine Vorstellungen durchaus umsetzen:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
     <head>
      <title>...</title>
      <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
      <style type="text/css">
       #text  {background:red}
       #keintext {background:green}
      </style>
     </head>
     <body>
      <p id="text" onmouseover="alert(this.id)" onclick="this.id='keintext'">
      der Text
      </p>
     </body>
    </html>

    Inwiefern das auf alle JS-interpretierenden Browsern zutrifft, kann ich Dir nicht sagen. Da auch document.getElementById('text').className in neueren Browsern funktioniert, würde ich bei der Wahl zwischen ID / className auch zu className tendieren.

    Das Skript sollte wie ein Schalter funktionieren: Beim ersten Click wird die ID ersetzt (z.B "navigation" > "navigation1"), beim zweiten wieder zurück getauscht ("navigation1" > "navigation") usw.

    Generell würde ich Deinem Problem aber mit dem Aufruf einer Funktion und ohne ID oder className arbeiten:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
     <head>
      <title>...</title>
      <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
      <script type="text/javascript">
       function anders(v)
        {
        if(v.style.backgroundColor=="red") v.style.backgroundColor="blue"
        else     v.style.backgroundColor="red"
        }
      </script>
     </head>
     <body>
      <p onMouseover="anders(this)" onMouseout="anders(this)">
      der Text
      </p>
     </body>
    </html>

    Gruß aus Berlin!
    eddi