Ergebnis 1 bis 8 von 8
  1. #1
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    Assoziative Array ansprechen macht beim MSIE Probleme

    HalliHallo zusammen!

    Ich hab auch mal wieder ne Frage. Ich hab ein assoziatives Array, dessen Elemente ich über einen Script-generierten Index ansprechen will. Im Fifo klappt das wunderbar, im MSIE macht es mir wieder mal Probleme.
    Hier ist das Array:
    HTML-Code:
    var provider = new Array();
    provider['O2'] = new Array("dd","aa");
    provider['T-Mobile'] = new Array("BLA","BLUB");
    Dieses spreche ich so an:
    HTML-Code:
    provider[String(el.options[el.selectedIndex].value)]
    Im Fifo wie gesagt keine Probleme, im MSIE gibt er mir dann einen Fehler aus, wenn ich versuche die length-Eigenschaft auszulesen: "provider[String(el.options[el.selectedIndex].value)] ist kein Objekt" oder so.

    Habt ihr ne Ahnung wieso und weshalb und warum?

    Hier noch der ganze Code:
    HTML-Code:
    <html>
    <head>
    <title>kalicki - Dynamic selectboxes</title>
    <script type="text/javascript">
    var opt = document.createElement("option");
    var opttext = document.createTextNode("- Bitte auswählen -");
    opt.appendChild(opttext);
    
    var provider = new Array();
    provider['O2'] = new Array("dd","aa");
    provider['T-Mobile'] = new Array("BLA","BLUB");
    var tarif = new Array();
    tarif['dd'] = new Array();
    tarif['aa'] = new Array();
    tarif['dd']['preise'] = new Array("340.-","432.-");
    tarif['aa']['preise'] = new Array("765.-","345.20");
    tarif['dd']['pics'] = new Array("http://web-japan.org/kidsweb/techno/mobile/images/mobile_top.jpg","http://news.vzw.com/images/releases/VX8100H4Web.jpg");
    tarif['aa']['pics'] = new Array("http://www.3g.co.uk/PR/May2005/PT-K1100.jpg","http://www.frankieroberto.com/weblog/images/photoblog/nokia7610.jpg");
    
    
    function delNodeContents(elem) {
    	while (elem.hasChildNodes())
    		elem.removeChild(elem.firstChild);
    	elem.appendChild(opt.cloneNode(true));
    }
    
    function showNextSelect(el,act) {
    	var i;
    	var temp = new Array();
    	switch (act) {
    		case "provider":
    			delNodeContents(el.nextSibling.nextSibling);
    			temp = provider[String(el.options[el.selectedIndex].value)];
    			for (i=0;i < provider[String(el.options[el.selectedIndex].value)].length;i++) {
    				var newel = document.createElement("option");
    				var newelt = document.createTextNode(provider[String(el.options[el.selectedIndex].value)][i]);
    				newel.appendChild(newelt);
    				el.nextSibling.nextSibling.appendChild(newel);
    			}
    			el.nextSibling.nextSibling.style.display = "block";
    			break;
    		case "model":
    			delNodeContents(el.nextSibling.nextSibling);
    			temp = tarif[String(el.options[el.selectedIndex].value)]["preise"];
    			for (i=0;i < temp.length;i++) {
    				var newel = document.createElement("option");
    				var newelt = document.createTextNode(temp[i]);
    				newel.appendChild(newelt);
    				el.nextSibling.nextSibling.appendChild(newel);
    			}
    			el.nextSibling.nextSibling.style.display = "block";
    			break;
    		case "mobile":
    			document.getElementById("phonepic").src = tarif[String(el.previousSibling.previousSibling.options[el.previousSibling.previousSibling.selectedIndex].value)]['pics'][el.selectedIndex-1];
    			break;
    	}
    }
    </script>
    </head>
    <body>
    <form name="form" method="post" action="index.php">
      <select name="menu1" onChange="showNextSelect(this,'provider')">
        <option>- Bitte auswählen -</option>
        <option>T-Mobile</option>
    
        <option>O2</option>
      </select>
      <select name="menu1" style="display:none;" onChange="showNextSelect(this,'model')">
        <option>- Bitte auswählen -</option>
      </select>
      <select name="menu1" style="display:none;" onChange="showNextSelect(this,'mobile')">
        <option>- Bitte auswählen -</option>
    
      </select><br />
    <img id="phonepic" src="#" alt="" />
    </body>
    </html>
    Und hier die online-Demo.

    Merci vielmal im voraus

    Dominique
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  2. #2
    pit-r Guest

    AW: Assoziative Array ansprechen macht beim MSIE Probleme

    Moin!

    IE besteht in den Options auf ' value"blah"'...

    Ahoi - Pit

    Edit - der Vollständigkeit halber: natürlich nur, wenn Du auch im Script den value ansprichst. Du hättest weniger zu ändern, wenn Du einfach anstelle von 'option.value' 'option.text' ansprichst.
    Geändert von pit-r (05-03-2006 um 14:47 Uhr)

  3. #3
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    AW: Assoziative Array ansprechen macht beim MSIE Probleme

    Entschuldige, ich versteh den ersten Punkt jetzt grad wirklich nicht, und ich denke der zweite baut auf dem 1. auf...
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  4. #4
    pit-r Guest

    AW: Assoziative Array ansprechen macht beim MSIE Probleme

    Hi!

    Du greifst auf el.options[el.selectedIndex].value zu, aber da ist kein value...

    Ahoi - Pit

  5. #5
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    AW: Assoziative Array ansprechen macht beim MSIE Probleme

    Achja, kein value-Attribut angegeben. Mit text würds dann gehen... Begriffen

    Danke pit
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  6. #6
    pit-r Guest

    AW: Assoziative Array ansprechen macht beim MSIE Probleme

    De riäng!

    Ahoi - Pit

  7. #7
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    AW: Assoziative Array ansprechen macht beim MSIE Probleme


    ee woala, ca marsch..
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  8. #8
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: Assoziative Array ansprechen macht beim MSIE Probleme

    Und noch ein Sache zur Klärung, da es sonst u.U. später zu mißverständnissen kommen kann

    Zitat Zitat von jeko
    Ich hab auch mal wieder ne Frage. Ich hab ein assoziatives Array, dessen Elemente ich über einen Script-generierten Index ansprechen will. Im Fifo klappt das wunderbar, im MSIE macht es mir wieder mal Probleme.
    Hier ist das Array:
    HTML-Code:
    var provider = new Array();
    provider['O2'] = new Array("dd","aa");
    provider['T-Mobile'] = new Array("BLA","BLUB");
    Es gibt in JS keine Assoziativen Arrays, das einzige was du hier machst einem Array-Objekt neue Eigenschaften geben, das kannst du mit jeden x-beliebigen Objekt auch machen oder einfach direkt ein Objekt verwenden:

    var provider = new Object();
    provider['O2'] = ....

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 16-02-2007, 01:12
  2. Antworten: 5
    Letzter Beitrag: 18-08-2005, 14:10
  3. warum kommt hier undefined als ergebnis?
    Von Jemand im Forum JavaScript
    Antworten: 11
    Letzter Beitrag: 28-04-2004, 13:50
  4. mach mit bei der grossen useragent suche!!
    Von rasputin im Forum Serverseitige Programmierung
    Antworten: 6
    Letzter Beitrag: 13-09-2002, 10:43
  5. Array Probleme
    Von Maxi im Forum JavaScript
    Antworten: 6
    Letzter Beitrag: 11-08-2001, 19:02

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •