addEventListener在firefox中工作但不在chrome中

时间:2014-10-24 14:56:31

标签: javascript google-chrome cross-browser

给定代码适用于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>

2 个答案:

答案 0 :(得分:1)

我不知道为什么他们都没有约束力但是你不是在寻找改变功能吗?所以你可以绑定一次吗?

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

此外,如果你不反对Jquery,你可能想要调查一下它经常摆脱跨浏览器的问题。在Jquery:

 $('body').on('change', '#category', function() {
     getQuestion($(this));
 })

答案 1 :(得分:0)

试试这个:

<script>
    window.onload = initialise();

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

    function initialise() {
        var Category = document.getElementById('category');
        Category.addEventListener("change", getQuestion, false);
    }

</script>