Ankündigung

Einklappen
Keine Ankündigung bisher.

zweimaliges lesen der gleichen variable schießt script ab

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • zweimaliges lesen der gleichen variable schießt script ab

    hi zusammen,

    ich programmiere schon seit jahren (js allerdings erst seit ein paar tagen) , aber so einen fehler hab ich noch nicht gesehen, und es hat mich ewigkeiten gekostet darauf zu kommen, das das überhaupt der fehler ist.......

    versuch ich auf ein und dasselbe DOM-element zweimal zuzugreifen (nur lesend) hängt mein skript, mach ich das nur einmal klappt alles.......

    gegeben folgende einfache HTML-seite bestehend aus drei listboxen von denen eine unsichtbar ist, bei klicken auf die erste listbox soll die zweite listbox rechts mit einigen strings aus der versteckten letzten checkbox gefüllt werden:



    Code:
    <html>
    	<head>
    		<title>Test</title>
    		<script src="selectAgent.js" type="text/javascript">
    		</script>
    	</head>
    	
    <body>
    
    
    
    Waehlen Sie die Wirkstoffklasse
    
    
    	<select name="component_vi_medikamente_wirkstoffklasse_ID_1" class="CobaltSelect">
            	<option onClick="selectAgent(this.value)" value=""></option>
              	<option onClick="selectAgent(this.value)" value="2">ACE - Hemmer</option>
    		<option onClick="selectAgent(this.value)"  value="9">Aspirin</option>
    		<option onClick="selectAgent(this.value)" value="3">AT1 - Antag.</option>
    		<option onClick="selectAgent(this.value)" value="7">Beta-Blocker</option>
    		<option onClick="selectAgent(this.value)" value="1">Clopidogrel</option>
    		<option onClick="selectAgent(this.value)" value="8">Diuretika</option>
    		<option onClick="selectAgent(this.value)" value="10">GPIIb/IIIa - Antag.</option>
    		<option onClick="selectAgent(this.value)" value="4">Kalzium - Antag.</option>
    		<option onClick="selectAgent(this.value)" value="11">Katecholamine</option>
    		<option onClick="selectAgent(this.value)" value="5">orale Nitrate</option>
    		<option onClick="selectAgent(this.value)" value="6">Statine</option>
    
            </select>
    
    
    
    
    
    
    
    
    Waehlen Sie den Wirkstoff
    
    
    		
    
    		<select name="wirkstoff" size="1">
    		
    		</select>
    	</form>
    
    
    
    
    
    
    
    <select name="component_vi_medikamente_wirkstoff_ID_1" class="CobaltSelect" style="display:none">
            <option value="2;2">ACE - Hemmer --- Ramipril</option>
    	<option value="2;3">ACE - Hemmer --- Enalapril</option>
    	<option value="7;10">Beta-Blocker --- Metoprolol</option>
    	<option value="7;11">Beta-Blocker --- Carvedilol</option>
    	<option value="7;12">Beta-Blocker --- Nebivolol</option>
    </select>
    
    
    </body>
    </html>
    sowie folgende simple js-funktion:


    Code:
    function selectAgent(pAgentClassID) {
    
    /*	agentClassID is passed when the function is called		*/
    
    	//check input
    
    	if(pAgentClassID == ""){
    		alert("Keine Wirkstoffklasse ausgewählt!");
    	}
    	else {
    	
    		document.write("option-anzahl :" + document.getElementsByName("component_vi_medikamente_wirkstoff_ID_1")[0].length);
    		
    			
    	}
    }
    das klappt soweit, aber halt nur wenn ich obiges document.write-statement genau einmal mache.......mache ich das in der funktion zweimal, also z.b.:

    Code:
    function selectAgent(pAgentClassID) {
    
    /*	agentClassID is passed when the function is called		*/
    
    	//check input
    
    	if(pAgentClassID == ""){
    		alert("Keine Wirkstoffklasse ausgewählt!");
    	}
    	else {
    	
    		document.write("option-anzahl :" + document.getElementsByName("component_vi_medikamente_wirkstoff_ID_1")[0].length);
    		
    		document.write("option-anzahl :" + document.getElementsByName("component_vi_medikamente_wirkstoff_ID_1")[0].length);
    			
    	}
    }

    klappt gar nichts, dass heisst mein script hängt nach der ersten ausgabe, obwohl die beiden write-statements völlig identisch sind!?!

    wie kann das sein? sobald ich in dem script versuche of DOM-elemente zweimal LESEND zuzugreifen schmiert das script ab?
    ich bin nicht gerade der firmste in JS, aber das erscheint mir völlig bizarr...

    hab ich irgendwas falsch macht bzw. was an DOM falsch verstanden?

    danke für jede hilfe..........


  • #2
    Wenn du document.write auf ein bereits bestehendes Dokument anwendest wird dieses überschrieben, somit existieren nach dem ersten document.write deine Selectboxen nicht mehr.

    Kommentar


    • #3
      ok,

      vielen dank für den hinweis...

      dann hätte ich noch eine frage:

      wie mach ich denn dann debug-ausgaben, wenn ich nicht document.write verwenden will?
      mit alert-boxen? sowas wie print oder echo gibt es ja nicht.............

      Kommentar


      • #4
        Entweder mit alert-boxen, oder du beschreibst ein DIV mittels innerHTML, dieses kannst du dann auch erweitern.

        Und wie du Selectboxen ansprichst, schaust du hier
        http://de.selfhtml.org/javascript/objekte/options.htm

        Kommentar

        Lädt...
        X