2014-10-24 4 views
3

Данный код работает в Mozilla Firefox 31.0, но не в Google Chrome 38.0.2125.104 Как решить эту проблему?addEventListener, работающий в firefox, но не в хроме

Обратите внимание: использование функции 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> 
+3

Не все браузеры отправки события щелчка на опционных элементов, так как они могут быть выбраны с помощью других средств. Если вы хотите, чтобы событие было выбрано, используйте событие изменения родительского выбора. – RobG

+0

Обратите внимание, что вы сделали редактирование, чтобы сказать, что использование изменений не является выбором по какой-либо причине? –

+0

Изменить не вариант, потому что вам может потребоваться снова выбрать ту же опцию. – dorado

ответ

1

Я не знаю, почему все они не являются обязательными, но разве вы не ищете функцию on change? Значит, вы можете просто привязываться к этому однажды?

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

Кроме того, если вы не против Jquery, вы можете захотеть взглянуть на него часто избавляется от проблем кросс-браузера. В Jquery:

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

Это работает не из-за какой-либо специальной магии jQuery, а потому, что вы используете более подходящее событие. Обратите внимание, что это тоже работает по-разному в разных браузерах. – RobG

0

попробовать это:

<script> 
    window.onload = initialise(); 

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

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

</script> 
Смежные вопросы