为什么在更改时赢得了addEventListener触发器?

时间:2014-07-19 19:09:05

标签: javascript dom addeventlistener

尝试让eventlistener运行,即当我选择英国时,另一个选择框将出现选择县(county()函数),但由于某种原因,addEventListener将不会调用该函数,我不能如何通过选定的国家到县功能?请任何想法。

                function countries() {
                    xmlRequest("countries.xml");
                    var country_selector = document.createElement("SELECT");
                    country_selector.id = "cou n tryselection";
                    document.getElementById("quiz").appendChild(country_selector);
                    var t = document.getElementById("countryselection");

                    var c_opt = document.createElement("option");
                    c_opt.text = "Please select";
                    c_opt.selected = true;
                    t.add(c_opt);
                    c_opt = document.createElement("option");
                    c_opt.text = "United Kingdom";
                    c_opt.value = "1";
                    t.add(c_opt);
                    document.getElementById("countryselection").addEventListener("change", count y(this.value), false);
                    var x = xmlDoc.getElementsByTagName("country");
                    for (i = 0; i < x.length; i++) {
                        var opt = document.createElement("option");
                        opt.text = x[i].getElementsByTagName("country_name ")[0].childNodes[0].nodeValue;
                        t.add(opt);
                    }
                }

                function county(Country) {
                    if (!document.getElementById("countyselection")) {
                        if (Country === "1") {
                            xmlRequest("counties.xml");
                            document.getElementById("quiz").innerHTML += "<select id='countyselection'></select>";
                            var t = document.getElementById("countyselection");
                            var y = xmlDoc.getElementsByTagName("county");
                            for (j = 0; j < y.length; j++)
                            {
                                var opt = document.createElement("option");
                                var txt = y[j].getElementsByTagName("county_name")[0].childNodes[0].nodeValue;
                                opt.text = txt;
                                t.add(opt);
                            }
                        }
                    } else {
                        var f = document.getElementById("countyselection");
                        document.getElementById("countyselection").parentNode.removeChild(f);
                    }
                }

1 个答案:

答案 0 :(得分:1)

因为您正在调用该函数,而不是引用它,并且函数名中有空格。

变化

document.getElementById("countryselection").addEventListener("change", count y(this.value), false);

document.getElementById("countryselection").addEventListener("change", function() {
    county(this.value);
}, false);

还要注意这样的事情

country_selector.id = "cou n tryselection";

完全无效,您无法使用带空格的随机文字作为ID