deSavoy: Mehrere Elemente ansprechen

Hi,
es geht um eine Funktion die mehrere ID ansprechen soll.

  
    function addimg(path){  
        document.getElementById('image_background').value=path;  
    }  

So funktioniert es auf einem Element, Problem ist aber das es auf mehrere Elemente angewendet werden soll.
Ungefähr so(Funktioniert natürlich absolut nicht so wie gedacht^^):

  
    function addimg(path){  
        document.getElementById('image_background').value=path;  
    }  
    function addimg(path){  
        document.getElementById('image_background_center').value=path;  
    }  

Dieses Element wird geöffnet:

<div id="toPopup">  
  <div id="popup_content">  
<?php  
  $img = scandir('images/');  
  foreach ($img as $key=>$value) {  
      if($value != '.' && $value != '..'){  
          $file = 'images/';  
          $path = $file . $value;  
          echo '<div class="close"><a href="javascript:addimg(\''.$path.'\')"><img src="'.$path.'"/></a></div>';  
      }  
  }  
?>  
  </div>  
  <div class="close"><p align="center">CLOSE</p></div>  
</div>

und übergibt nach Auswahl des Bildes den Namen an ein Textfeld(input type="text").
Das Feld sieht so aus:

      <input type="text" name="image_background" id="image_background" size="25" value="<?=$image_background?>">  
      <label for="image_background"><a href="#" class="topopup"><img src="wm_files/images/image.png" style="vertical-align: middle" alt="image" title="Bild einf&uuml;gen"></a></label>

Es gibt mehrere Textfelder die das Element nutzen sollen, z.B.:
image_background image_background_center und und und.....

Ich hoffe das mir einer helfen kann und natürlich das mein Manko(Problem) gut beschrieben ist.

  1. Java und JavaScript sind SEHR verschieden! Der Unterschied zwischen Java und JavaScript ist größer als der zwischen …

    Ich hoffe das mir einer helfen kann und natürlich das mein Manko(Problem) gut beschrieben ist.

    Du hast das Problem eines Lösungsansatzes beschrieben, nicht das eigentliche Problem, bzw. was du vor hast.

    es geht um eine Funktion die mehrere ID ansprechen soll.

    Es darf dokumentweit nur _EINE_ ID geben.

    function addimg(path){
            document.getElementById('image_background').value=path;
        }
        function addimg(path){
            document.getElementById('image_background_center').value=path;
        }

    ~~~javascript
    function addimg(path) {  
        document.getElementById('image_background').value=path;  
        document.getElementById('image_background_center').value=path;  
    }
    

    So macht man 2 Dinge mit einer funktion. Die Funktion wird aber höchstwahrscheinlich mit deinen multiplen IDs kollidieren.

    Dieses Element wird geöffnet:

    <div id="toPopup">

    <div id="popup_content">
    <?php
      $img = scandir('images/');
      foreach ($img as $key=>$value) {
          if($value != '.' && $value != '..'){
              $file = 'images/';
              $path = $file . $value;
              echo '<div class="close"><a href="javascript:addimg(''.$path.'')"><img src="'.$path.'"/></a></div>';
          }
      }
    ?>
      </div>
      <div class="close"><p align="center">CLOSE</p></div>
    </div>

    
    > und übergibt nach Auswahl des Bildes den Namen an ein Textfeld(input type="text").  
    > Das Feld sieht so aus:  
    > ~~~php
    
          <input type="text" name="image_background" id="image_background" size="25" value="<?=$image_background?>">  
    
    >       <label for="image_background"><a href="#" class="topopup"><img src="wm_files/images/image.png" style="vertical-align: middle" alt="image" title="Bild einf&uuml;gen"></a></label>
    
    

    Bei einem JavaScript-Problem ist dein PHP-Code vollkommen egal.

    Über die ID hab ich schon gemeckert. @style wird hier nicht gebraucht, stopf es in deine CSS-Datei, @alt sollte ein aussagekräftigen Wert haben, gest&uuml;mmel will niemand, benutze UTF-8 als Zeichenkodierung http://wiki.selfhtml.org/wiki/Grundlagen/Praxisnah/Zeichenkodierung_und_geschriebene_Sprache.

    Was das a-Element da macht weiß ich nicht.

    Es gibt mehrere Textfelder die das Element nutzen sollen, z.B.:
    image_background image_background_center und und und.....

    Hä?

    Also noch mal, was willst du erreichen? Bitte in Prosa und nicht in diversen Codes.

    MfG
    bubble

    --
    If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
    1. Hi,
      stimmt Java ist nicht Javascript(hätte ich mal den richtigen Bereich gewählt)sorry...

      Hauptsächlich geht es nur um dieses:

      function addimg(path) {  
          document.getElementById('image_background').value=path;  
          document.getElementById('image_background_center').value=path;  
      }
      

      »So macht man 2 Dinge mit einer funktion. Die Funktion wird aber höchstwahrscheinlich mit deinen multiplen IDs kollidieren.«

      Wie kann ich genau das Problem umgehen?

      Zu den Style-Elementen, sie sind nur während des werkelns dort enthalten(verschwinden also in die css Datei später).
      Der alt-Wert wird später genauer definiert(wenn das ganze dann mal rkomplett funktioniert).
      Das gestümmel ist eine Unachtsamkeit gewesen.
      das a-Element übergibt den Wert an ein Textfeld.

      1. »So macht man 2 Dinge mit einer funktion. Die Funktion wird aber höchstwahrscheinlich mit deinen multiplen IDs kollidieren.«

        Bitte lass die normalen Zitatzeichen stehen, dann kann die Forumsoftware das Zitat auch als Zitat kennzeichnen.

        Wie kann ich genau das Problem umgehen?

        Attribute verwenden die mehrfach vorhanden sein können, z.B. Klassen (@class) (die kennst du vielleicht schon von CSS). https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll wäre in modernen Browsern die leichteste Variante um alle besagten Elemente zu erfassen.

        Zu den Style-Elementen, sie sind nur während des werkelns dort enthalten(verschwinden also in die css Datei später).
        Der alt-Wert wird später genauer definiert(wenn das ganze dann mal rkomplett funktioniert).

        Dann sei dir Vergeben ;)

        Das gestümmel ist eine Unachtsamkeit gewesen.

        &uuml; statt ü braucht schon mehr als Unachtsamkeit. Das Wiki hat dazu einen schönen Artikel.

        das a-Element übergibt den Wert an ein Textfeld.

        Leider weiß ich immer noch nicht genau wovon du sprichst.

        Also noch mal, was willst du erreichen? Bitte in Prosa und nicht in diversen Codes.

        Hier hätte ich wohl ein wenig expliziter sein können: Bitte beschreibe dein wirkliches Problem, nich das Problem, dass bei deiner vermeintlichen Lösung auftritt.

        Etwas in etwa in der Form: Ich habe "das und das"-Problem und dachte "dies und jenes" wäre ein guter Ansatz/"dies und jenes" habe ich schon probiert, leider komme ich "hier und dort" nicht weiter. Wie löse ich das Problem (hierbei ist primär dein "das und das"-Problem gemeint und nicht dein "hier und dort"-komme-ich-nicht-weiter-Problem).

        MfG
        bubble

        --
        If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
        1. Hi,
          die ID wird dringend benötigt,da sonst der Wert(der Name des Bildes nicht in das Input-Feld geschrieben wird),die Bilder werden vorher aus dem Ordner ausgelesen.

          function addimg(path) {  
              document.getElementById('image_background').value=path;  
              document.getElementById('image_background_center').value=path;  
          }
          

          übergibt den Wert an diesem:
          <input type="text" name="image_background" id="image_background" size="25" value="<?=$image_background?>">

          Wie kann ich genau das Problem umgehen?
          Attribute verwenden die mehrfach vorhanden sein können, z.B. Klassen (@class) (die kennst du vielleicht schon von CSS). https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll wäre in modernen Browsern die leichteste Variante um alle besagten Elemente zu erfassen.

          Mit class funktioniert es leider nicht da wie gesagt der Wert(Name des Bildes) an die ID gesendet wird(Was ich nicht umgehen oder ändern kann, wie gesagt ich nicht).

          das a-Element übergibt den Wert an ein Textfeld.
          Leider weiß ich immer noch nicht genau wovon du sprichst.

          echo '<span class="close"><a href="javascript:addimg(\''.$path.'\')"><img src="'.$path.'" style="height:50px;width:50px;padding:10px;"/></a></span>';
          Diese Zeile gibt das Bild aus und damit wird der Name übergeben.

          Mit dem oben gezeigten Funktion, wird der Wert(Name des Bildes) an beide Elemente(Input_Felder) übergeben.
          Das soll aber nicht so sein.

          Darum hoffe ich das irgendwer mir helfen kann.

          1. die ID wird dringend benötigt,da sonst der Wert(der Name des Bildes nicht in das Input-Feld geschrieben wird), […]
            Mit dem oben gezeigten Funktion, wird der Wert(Name des Bildes) an beide Elemente(Input_Felder) übergeben.
            Das soll aber nicht so sein.

            Aus dem Kontext gerissene Notationen von HTML-Elementen und ein wenig JavaScript, geht immernoch nicht hervor, wass du erreichen willst.

            Mit dem oben gezeigten Funktion, wird der Wert(Name des Bildes) an beide Elemente(Input_Felder) übergeben.

            Mit "Name des Bildes" meinst du wahrscheinlich den Pfad zur Bild-Resource,
            wenn du den nicht an die Textfelder "übergeben" willst (also deren Inhalte damit setzen willst), was denn dann?

            echo '<span class="close"><a href="javascript:addimg(\''.$path.'\')"><img src="'.$path.'" style="height:50px;width:50px;padding:10px;"/></a></span>';

            Das kann man auch besser lösen (der einfachheitshalber mit onclick-Attribut):
            echo '<img src="'.$path /* hier fehlt Kontextwechsel-Behandlung */ .'" style="..." onclick="addimg(this.src)" />';

            Diese Zeile gibt das Bild aus und damit wird der Name übergeben.

            Diese Funktion setzt die value-Attribute irgendwelche DOM-Knoten mit dem Pfad zur Bild-Resource. Nicht "das Bild", indirekt den Namen (wenn du den Dateinamen als "den Namen" bezeichnest).

            Leider bist du nach wie vor noch nicht auf meine wichtigste Frage/Aufforderung eingegangen:

            Also noch mal, was willst du erreichen? Bitte in Prosa und nicht in diversen Codes.
            Hier hätte ich wohl ein wenig expliziter sein können: Bitte beschreibe dein wirkliches Problem, nich das Problem, dass bei deiner vermeintlichen Lösung auftritt.
            Etwas in etwa in der Form: Ich habe "das und das"-Problem und dachte "dies und jenes" wäre ein guter Ansatz/"dies und jenes" habe ich schon probiert, leider komme ich "hier und dort" nicht weiter. Wie löse ich das Problem (hierbei ist primär dein "das und das"-Problem gemeint und nicht dein "hier und dort"-komme-ich-nicht-weiter-Problem).

            MfG
            bubble

            PS: PHP-Code ist immer noch fehl am Platz.

            --
            If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
            1. Aus dem Kontext gerissene Notationen von HTML-Elementen und ein wenig JavaScript, geht immernoch nicht hervor, wass du erreichen willst.

              Ich habe mehrere Inputfelder mit eindeutiger ID, diese übernehmen beim anklicken des Bildes nur den Namen des Bildes(Pfad) um diesen dann zu speichern, in einer anderen Datei.

              Mit "Name des Bildes" meinst du wahrscheinlich den Pfad zur Bild-Resource,
              wenn du den nicht an die Textfelder "übergeben" willst (also deren Inhalte damit setzen willst), was denn dann?

              Der Name des Bildes(Pfad) soll an »ein« Textfeld übergeben werden, da jedes Textfeld ein anderes Bild haben kann(Auswahlmöglichkeit).
              Allerdings ergibt das hier:

              function addimg(path) {  
                  document.getElementById('image_background').value=path;  
                  document.getElementById('image_background_center').value=path;  
              }
              

              das mehr als nur das eine angesprochene Textfeld mit dem Namen des Bildes(Pfad) gefüllt wird.

              Ziel ist es das jedes Textfeld die Funktion nutzen kann ohne das die anderen davon betroffen sind.

              echo '<span class="close"><a href="javascript:addimg(\''.$path.'\')"><img src="'.$path.'" style="height:50px;width:50px;padding:10px;"/></a></span>';
              Das kann man auch besser lösen (der einfachheitshalber mit onclick-Attribut):
              echo '<img src="'.$path /* hier fehlt Kontextwechsel-Behandlung */ .'" style="..." onclick="addimg(this.src)" />';

              Bei diesem: (der einfachheitshalber mit onclick-Attribut) würde ich dich Fragen ob du ein Beispiel oder Lösungsansatz dazu hast
              Was ist damit gemeint: hier fehlt Kontextwechsel-Behandlung * ?

              Diese Zeile gibt das Bild aus und damit wird der Name übergeben.
              Diese Funktion setzt die value-Attribute irgendwelche DOM-Knoten mit dem Pfad zur Bild-Resource. Nicht "das Bild", indirekt den Namen (wenn du den Dateinamen als "den Namen" bezeichnest).

              Richtig: Name des Bildes = Pfad.

              Ich hoffe jetzt hab ich es besser erklärt und danke für deine bisherige Mühe.

      2. Om nah hoo pez nyeetz, deSavoy!

        stimmt Java ist nicht Javascript(hätte ich mal den richtigen Bereich gewählt)sorry...

        So begann früher ein Absatz im Kopf des Forums. Der Inhalt war zufällig. U.a. „Wusstest du, dass man den Themenbereich und den Titel für jedes Posting neu festlegen kann?“ oder so ähnlich.

        Äußerst hilfreich bei Threaddrift. ;-)

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Nabe und Nabel.

    2. Hi,

      es geht um eine Funktion die mehrere ID ansprechen soll.
      Es darf dokumentweit nur _EINE_ ID geben.

      Abgesehen daon, dass die Formulierung Quatsch ist (korrekt wäre: Eine ID muss dokumentweit eindeutig sein) – ist das doch hier überhaupt nicht das Problem.

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hi,

    So funktioniert es auf einem Element, Problem ist aber das es auf mehrere Elemente angewendet werden soll.
    Ungefähr so(Funktioniert natürlich absolut nicht so wie gedacht^^):

    function addimg(path){
            document.getElementById('image_background').value=path;
        }
        function addimg(path){
            document.getElementById('image_background_center').value=path;
        }

      
    Natürlich funktioniert das nicht, weil du dir hier die Funktion überschreibst.  
      
    Wenn du in der Lage bist, einen Parameter an die Funktion zu übergeben, um darin einen dynamischen Wert nutze zu können – wieso kommst du dann nicht von selber auf die Idee, einen weiteren Parameter zu benutzen, um darin die ID des Elementes, auf dem die Funktion wirken soll, zu übergeben?  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?