Twilo: Dropdownlistenelemente per AJAX Request austauschen

Hallo,

im Moment hänge ich etwas fest ;)

bis jetzt habe ich folgenden Code

<script type="text/javascript">  
<!--  
/*<![CDATA[*/  
function test(){  
  var xmlRequest = (window.XMLHttpRequest) ? new XMLHttpRequest() : ((window.ActiveXObject) ? new ActiveXObject('Microsoft.XMLHTTP') : false);  
  
  var url = 'preis_berechnen.php?' +  
    '_a=' + document.forms[0]._a.value + '&' +  
    '_b=' + document.forms[0]._b.value + '&' +  
    '_c=' + document.forms[0]._c.value + '&' +  
    '_d=' + document.forms[0]._d.value + '&' +  
    '_e=' + document.forms[0]._e.value + '&' +  
    '_f=' + document.forms[0]._f.value;  
  xmlRequest.open('GET', url, true);  
  xmlRequest.onreadystatechange = function(){  
    if(xmlRequest.readyState==4){  
      if(xmlRequest.status==200){  
        var xml = xmlRequest.responseXML;  
        var netto= document.getElementById('netto');  
        var mwst= document.getElementById('mwst');  
        var brutto= document.getElementById('brutto');  
        var aB= document.getElementById('aB');  
        var bB= document.getElementById('bB');  
        var cB= document.getElementById('cB');  
        var dB= document.getElementById('dB');  
        var eB= document.getElementById('eB');  
        var fB= document.getElementById('fB');  
        netto.innerHTML = xml.getElementsByTagName('netto')[0].firstChild.nodeValue;  
        mwst.innerHTML = xml.getElementsByTagName('mwst')[0].firstChild.nodeValue;  
        brutto.innerHTML = xml.getElementsByTagName('brutto')[0].firstChild.nodeValue;  
        aB.innerHTML = xml.getElementsByTagName('a')[0].firstChild.nodeValue;  
        bB.innerHTML = xml.getElementsByTagName('b')[0].firstChild.nodeValue;  
        cB.innerHTML = xml.getElementsByTagName('c')[0].firstChild.nodeValue;  
        dB.innerHTML = xml.getElementsByTagName('d')[0].firstChild.nodeValue;  
        eB.innerHTML = xml.getElementsByTagName('e')[0].firstChild.nodeValue;  
        fB.innerHTML = xml.getElementsByTagName('f')[0].firstChild.nodeValue;  
      }  
    }  
  }  
  xmlRequest.send(null);  
}  
/*]]>*/  
-->  
</script>

der HTML-Code sieht in etwa so aus

<!-- [...] -->  
  <form action="/" method="post">  
    <fieldset>  
      <legend>B</legend>  
      <p>xyx</p>  
      <p>  
        <select name="_b" onchange="test()">  
          <option label="90g (-666,54 €)" value="1">90g (-666,54 €)</option>  
          <option label="100g" value="2" selected="selected">100g</option>  
          <option label="135g (+2.335,14 €)" value="3">135g (+2.335,14 €)</option>  
          <option label="170g (+4.671,78 €)" value="4">170g (+4.671,78 €)</option>  
          <option label="250g (+10.008,59 €)" value="5">250g (+10.008,59 €)</option>  
          <option label="300g (+13.345,80 €)" value="6">300g (+13.345,80 €)</option>  
        </select>  
      </p>  
    </fieldset>  
<!-- [...] -->

das zurückgegebene XML File sieht im Moment so aus

<?xml version="1.0" encoding="UTF-8"?>  
<root>  
  <preis>  
    <netto>0,00</netto>  
    <mwst>0,00</mwst>  
    <brutto>0,00</brutto>  
  </preis>  
  <spezifikationen>  
    <aB>test2</aB>  
    <bB>90g</bB>  
    <cB>DIN A0</cB>  
    <dB>Farbe 4/0</dB>  
    <eB>1000 Stück</eB>  
    <fB>per Post</fB>  
  </spezifikationen>  
</root>

ich müßte jetzt bei den Dropdownlisten die Preisdifferenz ändern, sobald irgendeine Option geändert wurde

kann mir jemand ein Tipp geben, wie
1. das XML File am besten strukturiert werden sollte
2. ich die Listeneinträge dann per JavaScript ändere

zu. 2. müßte ich dazu est einmal alle Listeneinträge löschen, danach hinzufügen und anschließend überall die aktuelle Auswahl ändern, oder gibt es eine bessere Methode?

die Anzahl der Listenelemente bleibt immer gleich, solange "_a", wird der hidden Feld übertragen, die gleiche ID hat, wenn die ID anders ist, können es entweder mehr oder weniger werden

Nach eienr Suche per google habe ich den einfachen XMLHttpRequest hinbekommen, was sogar funktioniert :-)
Suchergebnisse zwecks der Dropdownliste waren leider nicht zufriedenstellend

mfg
Twilo

  1. hi,

    zu. 2. müßte ich dazu est einmal alle Listeneinträge löschen, danach hinzufügen und anschließend überall die aktuelle Auswahl ändern, oder gibt es eine bessere Methode?

    In der Beschreibung von options findest du eigentlich alles, was du dazu brauchst - sowohl, wie du Optionen löschen und hinzufügen kannst, als auch wie du ihre Eigenschaften (text und value dürften am interessantesten sein) ändern kannst.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo Wahsaga,

      zu. 2. müßte ich dazu est einmal alle Listeneinträge löschen, danach hinzufügen und anschließend überall die aktuelle Auswahl ändern, oder gibt es eine bessere Methode?

      In der Beschreibung von options findest du eigentlich alles, was du dazu brauchst - sowohl, wie du Optionen löschen und hinzufügen kannst, als auch wie du ihre Eigenschaften (text und value dürften am interessantesten sein) ändern kannst.

      ok, <http://de.selfhtml.org/javascript/objekte/options.htm#text@Text Eigenschaft> ist wohl die bessere Wahl :-)

      mein Hauptproblem ist jedoch 1...

      müßte ich das XML File wie folgt aufbauen?

      <?xml version="1.0" encoding="UTF-8"?>  
      <root>  
        <preis>  
          <netto>0,00</netto>  
          <mwst>0,00</mwst>  
          <brutto>0,00</brutto>  
        </preis>  
        <spezifikationen>  
          <aB>test2</aB>  
          <bB>90g</bB>  
          <cB>DIN A0</cB>  
          <dB>Farbe 4/0</dB>  
          <eB>1000 Stück</eB>  
          <fB>per Post</fB>  
        </spezifikationen>  
        <listeneintraege>  
          <a>  
            <1>TEXT</1> <!-- 1 = ID des Datensatzes -->  
            <2>TEXT</2>  
          </a>  
          <b>  
      <!-- [...] -->  
          </b>  
      <!-- [...] -->  
        </listeneintraege>  
      </root>
      

      wie komme ich dann per JavaScript an einzelnen Einträge?
      muss ich mich da irgendwie mit node durchhangeln?

      Gibt es bei SelfHTML darüber kein Artkel?

      Ein kleines Beispiel würde reichen, oder ein Link auf eine Beschreibung, wie man da rangehen sollte, im Moment stehe ich irgendwie auf'n Schlauch.

      mfg
      Twilo

      1. hi,

        müßte ich das XML File wie folgt aufbauen?

        Baue es so auf, dass es die Daten, die du transportieren willst, sinnvoll abbildet, und gut zu verarbeiten ist.

        wie komme ich dann per JavaScript an einzelnen Einträge?
        muss ich mich da irgendwie mit node durchhangeln?

        getElementsByTagName etc. gehen natürlich auch.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo,

          müßte ich das XML File wie folgt aufbauen?

          Baue es so auf, dass es die Daten, die du transportieren willst, sinnvoll abbildet, und gut zu verarbeiten ist.

          wie komme ich dann per JavaScript an einzelnen Einträge?
          muss ich mich da irgendwie mit node durchhangeln?

          getElementsByTagName etc. gehen natürlich auch.

          so könnte ich dann "a" ermitteln, jedoch nicht 1, da nicht sicher ist, dass es eine 1 gibt

          Die Reihenfolge der Einträge in der Dropdownliste könnten auch so aussehen

          5, 2, 3

          mfg
          Twilo

          1. hi,

            so könnte ich dann "a" ermitteln, jedoch nicht 1, da nicht sicher ist, dass es eine 1 gibt

            Das ist sowieso kein gültiges XML:

            <a>
                  <1>TEXT</1> <!-- 1 = ID des Datensatzes -->
                  <2>TEXT</2>
                </a>

            http://de.selfhtml.org/xml/regeln/tagsattrwerte.htm#tags_attribute_werte

            Die Reihenfolge der Einträge in der Dropdownliste könnten auch so aussehen

            5, 2, 3

            Die Nodes unterhalb von a - wenn du sie denn mal vernünftig benannt hast - dann wieder mit einer Schleife über die childNodes o.ä. zu durchlaufen, steht dir ja frei.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Hallo wahsaga.

              Die Nodes unterhalb von a - wenn du sie denn mal vernünftig benannt hast - dann wieder mit einer Schleife über die childNodes o.ä. zu durchlaufen, steht dir ja frei.

              Oder mit getElementsByTagName('*') …

              Einen schönen Samstag noch.

              Gruß, Ashura

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
              [HTML Design Constraints: Logical Markup]
              1. Hallo,

                Die Nodes unterhalb von a - wenn du sie denn mal vernünftig benannt hast - dann wieder mit einer Schleife über die childNodes o.ä. zu durchlaufen, steht dir ja frei.

                Oder mit getElementsByTagName('*') …

                im Moment sieht mein XML File so aus

                  <listeneintraege>  
                    <gewicht>  
                      <eintrag id="1">90g</eintrag>  
                      <eintrag id="2">100g (+55,00 €)</eintrag>  
                      <eintrag id="3">135g (+247,52 €)</eintrag>  
                      <eintrag id="4">170g (+440,04 €)</eintrag>  
                      <eintrag id="5">250g (+880,09 €)</eintrag>  
                      <eintrag id="6">300g (+1.155,12 €)</eintrag>  
                    </gewicht>  
                    <groesse>  
                      <eintrag id="4">DIN A0</eintrag>  
                      <eintrag id="3">DIN A1 (-249,31 €)</eintrag>  
                      <eintrag id="2">DIN A2 (-372,42 €)</eintrag>  
                      <eintrag id="5">DIN A3 (-434,68 €)</eintrag>  
                      <eintrag id="6">DIN A4 (-465,67 €)</eintrag>  
                      <eintrag id="7">DIN A5 (-482,04 €)</eintrag>  
                      <eintrag id="8">DIN A6 (-490,24 €)</eintrag>  
                      <eintrag id="9">DIN A7 (-493,60 €)</eintrag>  
                      <eintrag id="10">DIN A8 (-496,03 €)</eintrag>  
                      <eintrag id="11">DIN A9 (-496,48 €)</eintrag>  
                      <eintrag id="12">DIN A10 (-496,72 €)</eintrag>  
                    </groesse>  
                    <farbe>  
                      <eintrag id="1">Farbe 4/0</eintrag>  
                      <eintrag id="2">Farbe 4/2 (+36,77 €)</eintrag>  
                      <eintrag id="3">Farbe 4/1 (+18,38 €)</eintrag>  
                      <eintrag id="4">Farbe 2/2 (+0,00 €)</eintrag>  
                      <eintrag id="5">Farbe 2/1 (-18,39 €)</eintrag>  
                      <eintrag id="6">Farbe 2/0 (-36,78 €)</eintrag>  
                    </farbe>  
                    <auflage>  
                      <eintrag id="1">1000 Stück</eintrag>  
                      <eintrag id="2">2000 Stück (+498,44 €)</eintrag>  
                      <eintrag id="3">3000 Stück (+996,88 €)</eintrag>  
                      <eintrag id="4">5000 Stück (+1.495,32 €)</eintrag>  
                      <eintrag id="5">7500 Stück (+3.239,86 €)</eintrag>  
                      <eintrag id="6">10000 Stück (+4.485,96 €)</eintrag>  
                      <eintrag id="7">15000 Stück (+6.978,17 €)</eintrag>  
                      <eintrag id="8">20000 Stück (+9.470,38 €)</eintrag>  
                      <eintrag id="10">50000 Stück (+24.423,62 €)</eintrag>  
                      <eintrag id="11">100000 Stück (+49.345,69 €)</eintrag>  
                    </auflage>  
                    <versandart>  
                      <eintrag id="1">per Post</eintrag>  
                    </versandart>  
                  </listeneintraege>
                

                wenn ich jetzt getElementsByTagName('eintrag') verwende, kann ich die doch sieherlich nicht mehr auseinander halten, oder?
                also ob es ein Gewicht oder z.b. eine Größe ist

                mfg
                Twilo

                1. Hallo Twilo.

                  wenn ich jetzt getElementsByTagName('eintrag') verwende, kann ich die doch sieherlich nicht mehr auseinander halten, oder?
                  also ob es ein Gewicht oder z.b. eine Größe ist

                  Das deutet auf eine ungünstige Struktur hin. Du solltest die Struktur verwenden, um die Art der Daten auszuzeichnen. Ob du dies direkt im Elementnamen, in einem „typ“-Attribut oder auf eine völlig andere Art und Weise machst, ist natürlich dir überlassen.

                  Schließlich gibt es die Strukturierung genau dafür überhaupt: um die Verarbeitung (manuell oder maschinell) des jeweiligen Dokumentes zu vereinfachen.

                  Einen schönen Sonntag noch.

                  Gruß, Ashura

                  --
                  sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                  „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                  [HTML Design Constraints: Logical Markup]
                  1. Hallo,

                    wenn ich jetzt getElementsByTagName('eintrag') verwende, kann ich die doch sieherlich nicht mehr auseinander halten, oder?
                    also ob es ein Gewicht oder z.b. eine Größe ist

                    Das deutet auf eine ungünstige Struktur hin. Du solltest die Struktur verwenden, um die Art der Daten auszuzeichnen. Ob du dies direkt im Elementnamen, in einem „typ“-Attribut oder auf eine völlig andere Art und Weise machst, ist natürlich dir überlassen.

                    Schließlich gibt es die Strukturierung genau dafür überhaupt: um die Verarbeitung (manuell oder maschinell) des jeweiligen Dokumentes zu vereinfachen.

                    wie würdest du das denn machen?
                    heute, bzw. gestern war mein erster Tag mit XML :-)

                    was wäre in dem Fall denn "gut" strukturiert?

                    mfg
                    Twilo

                    1. Hallo Twilo.

                      wie würdest du das denn machen?

                      Das sagte ich bereits: entweder als separater Elementname oder in Form eines „typ“-Attributes, welches als Wert den jeweiligen Typus enthält.

                      Einen schönen Sonntag noch.

                      Gruß, Ashura

                      --
                      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                      [HTML Design Constraints: Logical Markup]
                2. hi,

                  im Moment sieht mein XML File so aus

                  <listeneintraege>

                  <gewicht>
                        <eintrag id="1">90g</eintrag>
                        <eintrag id="2">100g (+55,00 €)</eintrag>

                    
                  Das sind ungültige IDs.  
                    
                  
                  > wenn ich jetzt getElementsByTagName('eintrag') verwende, kann ich die doch sieherlich nicht mehr auseinander halten, oder?  
                  > also ob es ein Gewicht oder z.b. eine Größe ist  
                    
                  Du kannst getElementsByTagName auch als Methode unterhalb eines Node-Objektes aufrufen - dann bekommst du nur die Elemente mit entsprechendem Tagnamen, die unterhalb dieses Nodes liegen.  
                    
                  gruß,  
                  wahsaga  
                    
                  
                  -- 
                  /voodoo.css:  
                  #GeorgeWBush { position:absolute; bottom:-6ft; }
                  
                  1. Hallo,

                    im Moment sieht mein XML File so aus

                    <listeneintraege>

                    <gewicht>
                          <eintrag id="1">90g</eintrag>
                          <eintrag id="2">100g (+55,00 €)</eintrag>

                      
                    
                    > Das sind ungültige IDs.  
                      
                    
                    > > wenn ich jetzt getElementsByTagName('eintrag') verwende, kann ich die doch sieherlich nicht mehr auseinander halten, oder?  
                    > > also ob es ein Gewicht oder z.b. eine Größe ist  
                      
                    das soll eigentlich keine ID im Sinne von html sein, sondern die Datensatz ID  
                    sollte ich dieses Attribut umbennen?  
                      
                      
                    
                    > Du kannst getElementsByTagName auch als Methode unterhalb eines Node-Objektes aufrufen - dann bekommst du nur die Elemente mit entsprechendem Tagnamen, die unterhalb dieses Nodes liegen.  
                      
                    ich hatte folgendes probiert  
                    ~~~javascript
                    var xml = xmlRequest.responseXML;  
                    var groessen = xml.root.listeneintraege.groesse.getElementsByTagName('groesse');
                    

                    probiert, jedoch hagelt es nur Fehlermeldungen
                    mfg
                    Twilo

                    1. hi,

                      ich hatte folgendes probiert

                      var xml = xmlRequest.responseXML;

                      var groessen = xml.root.listeneintraege.groesse.getElementsByTagName('groesse');

                      
                      > probiert, jedoch hagelt es nur Fehlermeldungen  
                        
                      Den Zugriff auf listeneintraege und/oder groesse musst du dir natürlich auch erst mal besorgen.  
                        
                      gruß,  
                      wahsaga  
                        
                      
                      -- 
                      /voodoo.css:  
                      #GeorgeWBush { position:absolute; bottom:-6ft; }
                      
                      1. Hallo,

                        ich hatte folgendes probiert

                        var xml = xmlRequest.responseXML;

                        var groessen = xml.root.listeneintraege.groesse.getElementsByTagName('groesse');

                        
                        > > probiert, jedoch hagelt es nur Fehlermeldungen  
                          
                        
                        > Den Zugriff auf listeneintraege und/oder groesse musst du dir natürlich auch erst mal besorgen.  
                          
                        im Moment kann ich damit irgendwie gar nichts anfangen :-(  
                        wie muss ich da ungefähr vorgehen?  
                          
                        ps. hab eben gesehen, dass oben ein kleiner Schreibfehler drin ist, das letzte groesse muss natürlich "eintrag" lauten :)  
                          
                        mfg  
                        Twilo
                        
                        1. hi,

                          Den Zugriff auf listeneintraege und/oder groesse musst du dir natürlich auch erst mal besorgen.

                          im Moment kann ich damit irgendwie gar nichts anfangen :-(
                          wie muss ich da ungefähr vorgehen?

                          So, wie du es für bspw. die Elemente mit dem Tagnamen groesse auch machen willst.

                          var xml = xmlRequest.responseXML;
                          var listeneintraege = xml.root.getElementsByTagName("listeneintraege")[0];
                          var groesse = listeneintraege.getElementsByTagName("groesse");
                          var alleEintraegeUnterhalbVonGroesse = groesse.getElementsByTagName("eintrag");

                          Du musst natürlich nicht überall getElementsByTagName nehmen - wo du bspw. die Position eines Elements sicher kennst, kannst du bspw. auch über childNodes[x] darauf zugreifen, etc.

                          gruß,
                          wahsaga

                          --
                          /voodoo.css:
                          #GeorgeWBush { position:absolute; bottom:-6ft; }
                          1. Hallo,

                            var xml = xmlRequest.responseXML;
                            var listeneintraege = xml.root.getElementsByTagName("listeneintraege")[0];
                            var groesse = listeneintraege.getElementsByTagName("groesse");
                            var alleEintraegeUnterhalbVonGroesse = groesse.getElementsByTagName("eintrag");

                            Du musst natürlich nicht überall getElementsByTagName nehmen - wo du bspw. die Position eines Elements sicher kennst, kannst du bspw. auch über childNodes[x] darauf zugreifen, etc.

                            danke, ich werd damit mal etwas rumtesten

                            mfg
                            Twilo

                  2. Hi,

                    <eintrag id="1">90g</eintrag>
                          <eintrag id="2">100g (+55,00 €)</eintrag>[/code]

                    Das sind ungültige IDs.

                    Nur dann, wenn dem id-Attribut der Typ ID zugeordnet wurde - was aber nicht zwingend der Fall sein muß.

                    cu,
                    Andreas

                    --
                    Warum nennt sich Andreas hier MudGuard?
                    Schreinerei Waechter
                    O o ostern ...
                    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Hallo,

    im Firefox und Opera funktioniert es erstmal wie gewünscht... nur der IE weigert sich die Einträge zu ändern

    <script type="text/javascript">  
    <!--  
    /*<![CDATA[*/  
    function listeLeeren(liste){  
      for (var i = liste.length-1; i >= 0; i--){  
        liste.options[liste.length - 1] = null;  
      }  
    }  
    function aendern(xml, Aobj, Atag){  
      var eintraege = xml.getElementsByTagName(Atag);  
      for (var i=1; i<eintraege.length; i++) {  
        var eintrag = eintraege[i];  
        for (j=0; j<Aobj.length; ++j){  
          if (Aobj.options[j].value == eintrag.getAttribute('id')){  
          //alert(Aobj.options[j].text+'='+eintrag.firstChild.nodeValue);  
            Aobj.options[j].text = eintrag.firstChild.nodeValue;  
          }  
        }  
      }  
    }  
      
    function test(){  
      var xmlRequest = (window.XMLHttpRequest) ? new XMLHttpRequest() : ((window.ActiveXObject) ? new ActiveXObject('Microsoft.XMLHTTP') : false);  
      
      var url = 'preis_berechnen.php?' +  
        '_produkt_id='   + document.forms[0]._produkt_id.value + '&' +  
        '_gewicht_id='   + document.forms[0]._gewicht_id.value + '&' +  
        '_groesse_id='   + document.forms[0]._groesse_id.value + '&' +  
        '_farb_id='      + document.forms[0]._farb_id.value + '&' +  
        '_auflage_id='   + document.forms[0]._auflage_id.value + '&' +  
        '_versandart_id='+ document.forms[0]._versandart_id.value;  
      xmlRequest.open('GET', url, true);  
      xmlRequest.onreadystatechange = function(){  
        if(xmlRequest.readyState==4){  
          if(xmlRequest.status==200){  
            var xml = xmlRequest.responseXML;  
            var netto= document.getElementById('netto');  
            var mwst= document.getElementById('mwst');  
            var brutto= document.getElementById('brutto');  
            var produktB= document.getElementById('produktB');  
            var gewichtB= document.getElementById('gewichtB');  
            var groesseB= document.getElementById('groesseB');  
            var farbeB= document.getElementById('farbeB');  
            var auflageB= document.getElementById('auflageB');  
            var versandartB= document.getElementById('versandartB');  
            netto.innerHTML = xml.getElementsByTagName("netto")[0].firstChild.nodeValue;  
            mwst.innerHTML = xml.getElementsByTagName("mwst")[0].firstChild.nodeValue;  
            brutto.innerHTML = xml.getElementsByTagName("brutto")[0].firstChild.nodeValue;  
            produktB.innerHTML = xml.getElementsByTagName("produkt")[0].firstChild.nodeValue;  
            gewichtB.innerHTML = xml.getElementsByTagName("gewicht")[0].firstChild.nodeValue;  
            groesseB.innerHTML = xml.getElementsByTagName("groesse")[0].firstChild.nodeValue;  
            farbeB.innerHTML = xml.getElementsByTagName("farbe")[0].firstChild.nodeValue;  
            auflageB.innerHTML = xml.getElementsByTagName("auflage")[0].firstChild.nodeValue;  
            versandartB.innerHTML = xml.getElementsByTagName("versandart")[0].firstChild.nodeValue;  
      
            aendern(xml, document.forms[0]._gewicht_id, 'gewicht');  
            aendern(xml, document.forms[0]._groesse_id, 'groesse');  
            aendern(xml, document.forms[0]._farb_id, 'farbe');  
            aendern(xml, document.forms[0]._auflage_id, 'auflage');  
          }  
        }  
      }  
      xmlRequest.send(null);  
    }  
    /*]]>*/  
    -->  
    </script>
    
    <?xml version="1.0" encoding="UTF-8"?>  
    <root>  
      <preis>  
        <netto>532,04</netto>  
        <mwst>85,13</mwst>  
        <brutto>617,17</brutto>  
      </preis>  
      <spezifikationen>  
        <produkt>test2</produkt>  
        <gewicht>90g</gewicht>  
        <groesse>DIN A0</groesse>  
        <farbe>Farbe 4/0</farbe>  
        <auflage>1000 Stück</auflage>  
        <versandart>per Post</versandart>  
      </spezifikationen>  
      <listeneintraege>  
        <gewichte>  
          <gewicht id="1">90g</gewicht>  
          <gewicht id="2">100g (+55,00 €)</gewicht>  
          <gewicht id="3">135g (+247,52 €)</gewicht>  
          <gewicht id="4">170g (+440,04 €)</gewicht>  
          <gewicht id="5">250g (+880,09 €)</gewicht>  
          <gewicht id="6">300g (+1.155,12 €)</gewicht>  
        </gewichte>  
        <groessen>  
          <groesse id="4">DIN A0</groesse>  
          <groesse id="3">DIN A1 (-249,31 €)</groesse>  
          <groesse id="2">DIN A2 (-372,42 €)</groesse>  
          <groesse id="5">DIN A3 (-434,68 €)</groesse>  
          <groesse id="6">DIN A4 (-465,67 €)</groesse>  
          <groesse id="7">DIN A5 (-482,04 €)</groesse>  
          <groesse id="8">DIN A6 (-490,24 €)</groesse>  
          <groesse id="9">DIN A7 (-493,60 €)</groesse>  
          <groesse id="10">DIN A8 (-496,03 €)</groesse>  
          <groesse id="11">DIN A9 (-496,48 €)</groesse>  
          <groesse id="12">DIN A10 (-496,72 €)</groesse>  
        </groessen>  
        <farben>  
          <farbe id="7">Farbe 4/4 (+73,54 €)</farbe>  
          <farbe id="1">Farbe 4/0</farbe>  
          <farbe id="2">Farbe 4/2 (+36,77 €)</farbe>  
          <farbe id="3">Farbe 4/1 (+18,38 €)</farbe>  
          <farbe id="4">Farbe 2/2 (+0,00 €)</farbe>  
          <farbe id="5">Farbe 2/1 (-18,39 €)</farbe>  
          <farbe id="6">Farbe 2/0 (-36,78 €)</farbe>  
        </farben>  
        <auflagen>  
          <auflage id="1">1000 Stück</auflage>  
          <auflage id="2">2000 Stück (+498,44 €)</auflage>  
          <auflage id="3">3000 Stück (+996,88 €)</auflage>  
          <auflage id="4">5000 Stück (+1.495,32 €)</auflage>  
          <auflage id="5">7500 Stück (+3.239,86 €)</auflage>  
          <auflage id="6">10000 Stück (+4.485,96 €)</auflage>  
          <auflage id="7">15000 Stück (+6.978,17 €)</auflage>  
          <auflage id="8">20000 Stück (+9.470,38 €)</auflage>  
          <auflage id="10">50000 Stück (+24.423,62 €)</auflage>  
          <auflage id="11">100000 Stück (+49.345,69 €)</auflage>  
        </auflagen>  
        <versandarten>  
          <versandart id="1">per Post</versandart>  
        </versandarten>  
      </listeneintraege>  
    </root>
    

    wenn ich das alert auskommentiere, erhalte ich imemr die Sachen, die gemacht werden sollen... nur ändern tut sich im IE überhaupt nichts

    woran könnte das liegen?
    bzw. wo ist mein Fehler

    mfh
    Twilo

    1. Hallo,

      HTML Beispiel
      HTML Beispiel mit Alert-Ausgabe
      XML Beispiel

      getestet mit Opera 9.01 und Firefox 1.5.0.4 und IE 7.0... beim Letzteren werden die Dropdownelemente nicht ersetzt :(

      mfg
      Twilo

    2. Hallo,

      ich habe gerade mein Laptop hochgefahren und das ganze mal mit den IE 6 probiert... da funktioniert es

      scheint also am IE 7 zu liegen, kann oder darf der IE 7 den text nicht mehr überschreiben?

      mfg
      Twilo

      1. Hallo,

        scheint also am IE 7 zu liegen, kann oder darf der IE 7 den text nicht mehr überschreiben?

        Das könnte zumindest sein, weil die Eigenschaft HTMLOptionElemnet.text zumindest in der W3C-DOM-Spezifikation als readonly eingestuft ist.

        Warum überschreibst Du die OPTIONs nicht nach dieser Methode? Da wäre dann gleich das Erweitern der Anzahl mit abgedeckt.

        viele Grüße

        Axel

        1. Hallo,

          scheint also am IE 7 zu liegen, kann oder darf der IE 7 den text nicht mehr überschreiben?
          Das könnte zumindest sein, weil die Eigenschaft HTMLOptionElemnet.text zumindest in der W3C-DOM-Spezifikation als readonly eingestuft ist.

          Warum überschreibst Du die OPTIONs nicht nach dieser Methode? Da wäre dann gleich das Erweitern der Anzahl mit abgedeckt.

          das erweitern bzw. löschen komtm eigentlich nicht so oft vor, nur sehr sehr selten

          was mich wundert... warum kann der IE 7 folgendes Beispiel richtig ausführen?

          mfg
          Twilo

          1. Hallo,

            wenn die Liste labels hat, funktioniert das nicht mehr beim IE 7
            SelfHTML Beispiel mit labels

            mfg
            Twilo

            1. Hallo,

              wenn die Liste labels hat, funktioniert das nicht mehr beim IE 7
              SelfHTML Beispiel mit labels

              Wozu brauchst Du die hier? Die sind doch eigentlich nur für OPTGROUP relevant.

              viele Grüße

              Axel

              1. Hallo,

                wenn die Liste labels hat, funktioniert das nicht mehr beim IE 7
                SelfHTML Beispiel mit labels
                Wozu brauchst Du die hier? Die sind doch eigentlich nur für OPTGROUP relevant.

                die Listen werden per Smarty generiert, unter html_options (Ausgabe von HTML-Options)@Smarty habe ich leider keine Möglichkeit gefunden, die labels zu deaktivieren.

                Die Funktion möchte ich ungerne selber bearbeiten, da das dann nur Probleme beim updaten gibt :)

                mfg
                Twilo