Alright i made some progress.

I load this additionaly. Without it, the code above works flawless.

-------
function $(element)
{
        return document.getElementById(element);
}

var Compat = {
        addEventHandler: function(element, event, handler) {
                var _tmp, _onevent;
                if (!element || !event )
                        return false;
                if(typeof(element) == "string") {
                        element = document.getElementById(element);
                }
                if (element.addEventListener)   // DOM-konform
                        element.addEventListener(event, handler, false);
                else {
                        _onevent = 'on'+event;
                        if (element.attachEvent)      // IE
                                element.attachEvent(_onevent, handler);
                        else {                        // ältere Browser
                                _tmp = element[_onevent];
                                element[_onevent] = typeof _tmp == 'function'
                                        ? (function() { _tmp(); handler(); })
                                        : handler;
                        }
                }
        },
        removeEventHandler: function (element, event, handler) {
                var _tmp, _onevent;
                if (!element || !event )
                        return false;
                if(typeof(element) == "string") {
                        element = document.getElementById(element);
                }
                if (element.removeEventListener)   // DOM-konform
                        element.removeEventListener(event, handler, false);
                else {
                        _onevent = 'on'+event;
                        if (element.detachEvent)      // IE
                                element.detachEvent(_onevent, handler);
                        else {                        // ältere Browser
                                element[_onevent] = "";
                        }
                }
        },
        createXMLHttpRequest: function () {
                var req = null;
        try {
                        req = new ActiveXObject("MSXML2.XMLHTTP");
                }
        catch (err_MSXML2) {
                        try {
                                req = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        catch (err_Microsoft) {
                                if (typeof XMLHttpRequest != "undefined")
                                        req = new XMLHttpRequest;
                        }
                }
                return req;
        }
}
-------

-------
function ChangeStates() {
        var req = null;

        this.loadStates = function () {
                country = document.getElementById("country");
                req = Compat.createXMLHttpRequest();
                req.onreadystatechange = cs.setNewStates;
                req.open("GET", "./ajax/getstates.php?id=" + country.value, 
true);
                req.send("");
        }

        this.setNewStates = function () {
                if(req.readyState == 4)
                {
                        var states = document.getElementById("states");
                        isLoading = false;
                        if (req.status == 200) {
                                states.innerHTML = '<select id="state" 
name="state">' +
req.responseText + '</select>';
                        }
                        else {
                                states.innerHTML = 'Fehler!';
                        }
                }
        }

        this.init = null;
}

cs = new ChangeStates();

cs.init = function () {
        Compat.addEventHandler("country", "change", cs.loadStates);
}

Compat.addEventHandler(window, "load", cs.init);
-------

Reply via email to