给定的代码在Mozilla Firefox 31.0中有效,但在Google Chrome 38.0.2125.104中无效
如何解决这个问题?

请注意:此处不可以使用change()函数或jQuery!

<body>
    <select id="category">
        <option value="movies">Movies</option>
        <option value="artist">Artists</option>
        <option value="authors">Authors</option>
        <option value="chemistry">Chemistry</option>
    </select>
</body>

<script>
window.onload = initialise;
function initialise() {
    var options = document.getElementsByTagName('option');
    for (var i = 0; i < options.length; i++) {
        options[i].addEventListener("click", getQuestion, false);
        //console.log(i);
    }
}

function getQuestion() {
    console.log("getting question..");
}

</script>
</html>

最佳答案

我不知道为什么它们都不都绑定(bind),但是您不是在寻找on change函数吗?因此,您只需绑定(bind)一次即可?

//Untested
var Category = document.getElementsById('category');
Category.addEventListener("change", getQuestion, false);

另外,如果您不反对Jquery,则可能需要研究一下它,它经常消除跨浏览器的问题。在Jquery中:
 $('body').on('change', '#category', function() {
     getQuestion($(this));
 })

关于javascript - addEventListener在Firefox中工作,但不在chrome中工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26550550/

10-09 18:00