JavaScript onClick / onChange Handler mit mehreren Funktionen

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
Hi ich habe einen onChange-Event-Handler der immer nur eine Funktion ausführt.
Code:
onChange="show_plan_visualization(document.getElementById('plan_1_select_field').value, '1' ,'plan_1_minipic') ; show_plan_datas(document.getElementById('plan_1_select_field').value, '2' ,  'plan_1_box');"

die sache ist, dass wenn ich zwischen beide funktionen einen alert("test") setze, alles Funktioniert. Nur kann ich die Alert funktion nicht da drinne lassen.

Hier nochmal wie es klappt
Code:
onChange="show_plan_visualization(document.getElementById('plan_1_select_field').value, '1' ,'plan_1_minipic') ; alert("test"); show_plan_datas(document.getElementById('plan_1_select_field').value, '2' ,  'plan_1_box');"

woran liegt das?
 
Zuletzt bearbeitet:
geben die funktionen zufälligerweise false zurück? weil da würde er sonst abbrechen... möglicherweise gibt die zweite funktion auch einen Fehler aus. Hast du das schon mal getestet?

und ist das script irgendwo online, so dass man es sich mal angucken könnte?
 
Hier kann man sich das ganze ansehen. die funktionen haben garkeinen rückgabewert. Glaube aber kaum das jemand da durchblickt.

http://s217008359.online.de/xtc_hk/index.php

Die funktionen werden ausgeführt wenn man einen provider ausgewählt hat und dann auf einen tarif klickt. Normalerweise müsste direkt unter den selekt-feldern das providerlogo mit tarifbezeichnung stehen. Anstatt dessen kommt nur die lange tarifbeschreibung.

Edit: Die funktionen geben übrigens garkeinen wert zurück. Sondern schreiben etwas in divs
 
Zuletzt bearbeitet:
aso jetzt haste die Funktion show_plan_datas ja in die show_plan eingebaut.

Also wenn ich die Seite aufrufe meckert der W3C Validator schon mal dass IDs doppelt vergeben werden. Da du die IDs vergibst, um mit Javascript darauf zuzugreifen, müssen sie logischerweise eindeutig sein. Javascript ist sehr fehleranfällig und bricht auch schon beim kleinsten Fehler alles ab. Wenn also in der ersten Funktion ein Fehler auftritt, führt er die zweite gar nicht erst aus sondern schmeisst ein Fehler.

Die Bilder werden wohl sauber eingebunden.. nur die Pfade stimmen wohl nicht.
Bie vodafone z.B. sucht er nach http://s217008359.online.de/xtc_hk/images/vodafone_logo.jpg .. Falls du einen Linuxserver hast, musst du noch auf Gross/Kleinschreibung achten. Dass es daran liegt siehst du z.B. daran, dass das T-Mobile logo anzeigt wird...

<btw>
Beim auswählen der zweiten Selectbox treten ausserdem Javascript Fehler auf, die aber das eigentliche Script nicht stören dürften. Geht hierbei wohl eher um den Doctype.. Trotzdem solltest du das mal fixen :-)

Code:
Nicht übereinstimmendes Tag. Erwartet: </img>.
<a class="details_2" href="javascript:...sibility:hidden;" id="device_1"></div>

nicht wohlgeformt
<TABLE border=0 width=150>

</btw>
 
Zuletzt bearbeitet:
Danke für die Antwort, aber daran liegt es nicht. Ich konnte das Problem jetzt eingrenzen aber noch nicht lösen.
Es muss an der macheRequest oder alertInhalt funktion liegen.

Code:
var http_request = false;

    function macheRequest(url, show_at_id) {

        http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // zu dieser Zeile siehe weiter unten
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
            return false;
        }
        http_request.onreadystatechange = new Function('fx', 'alertInhalt("'+show_at_id+'")');
        http_request.open('GET', url, true);
        http_request.send(null);
		delete(http_request);
    }



    function alertInhalt(show_at_id) 
	{
        if (http_request.readyState == 4) 
		{
             var answer = http_request.responseText;
        	   //var answer = http_request.responseText;
        	   if(document.getElementById(show_at_id).innerHTML != answer)
			   {
                document.getElementById(show_at_id).innerHTML = answer;
               }
              else
			  {
                document.getElementById(show_at_id).innerHTML = "";
              }
        }
		

    }
	
	
	
	
	
	function show_select(kind, parent_id, device_group, select_id, device_or_plan_number, show_at_id) // id ist je nach kind (tarif oder gerät) die tarif oder geräte id
	{
		macheRequest('functions.ajax.php?function=getSelect&kind=' + kind + '&device_group=' + device_group + '&select_id=' + select_id + '&parent_id=' + parent_id + '&device_or_plan_number=' + device_or_plan_number, show_at_id);
	}

Ich habe festgestellt sobald ich in einer funktion 2 mal die macheRequest funktion aufrufe (egal in welcher form) das eine Funktion nicht ausgeführt wird. Es sei denn ich setzte eine alert-funktion dazwischen.

Ich vermute, das die alert-funktion die httprequest oder sowas zurücksetzt und das deshalb die zweite funktion ausgeführt bzw ausgegeben wird.

Was denkt ihr
 
Zurück
Oben