"документ.getElementByClass-это не функция"
Я пытаюсь запустить функцию onclick любой кнопки с class="stopMusic". Я получаю ошибку в Firebug
документ.getElementByClass-это не функция
вот мой код:
var stopMusicExt = document.getElementByClass("stopButton");
stopButton.onclick = function() {
var ta = document.getElementByClass("stopButton");
document['player'].stopMusicExt(ta.value);
ta.value = "";
};
6 ответов:
вы, наверное, имели в виду
document.getElementsByClassName()(а затем захватывает первый элемент из результирующего списка узлов):var stopMusicExt = document.getElementsByClassName("stopButton")[0]; stopButton.onclick = function() { var ta = document.getElementsByClassName("stopButton")[0]; document['player'].stopMusicExt(ta.value); ta.value = ""; };вы все еще можете получить ошибку
document.getElementsByClassName- это не функцияв старых браузерах, однако, в этом случае вы можете предоставить резервную реализацию, если вам нужно поддерживать эти старые браузеры.
как говорили другие, вы не используете правильное имя функции, и оно не существует универсально во всех браузерах.
Если вам нужно сделать кросс-браузерную выборку чего-либо, кроме элемента с идентификатором с
document.getElementById(), то я настоятельно рекомендую вам получить библиотеку, которая поддерживает CSS3 селекторы во всех браузерах. Это сэкономит вам огромное количество времени на разработку, тестирование и исправление ошибок. Самое простое, что нужно сделать, это просто использовать jQuery потому что это так широко доступный, имеет отличную документацию, имеет бесплатный доступ к CDN и имеет отличное сообщество людей, стоящих за ним, чтобы ответить на вопросы. Если это кажется больше, чем вам нужно, то вы можете получить шипеть который является просто библиотекой селекторов (на самом деле это механизм селектора внутри jQuery и других). Я использовал его сам по себе в других проектах и это легко, продуктивно и малых.если вы хотите выбрать несколько узлов одновременно, вы можете сделать это разными способами. Если вы даете им все тот же класс, вы можете сделать это с:
var list = document.getElementsByClassName("myButton"); for (var i = 0; i < list.length; i++) { // list[i] is a node with the desired class name }и он вернет список узлов, которые имеют это имя класса.
в шипении, это было бы так:
var list = Sizzle(".myButton"); for (var i = 0; i < list.length; i++) { // list[i] is a node with the desired class name }в jQuery, это было бы так:
$(".myButton").each(function(index, element) { // element is a node with the desired class name });в обоих Sizzle и jQuery, вы можете поместить несколько имен классов в селектор, как это и использовать гораздо более сложные и мощные селекторы:
$(".myButton, .myInput, .homepage.gallery, #submitButton").each(function(index, element) { // element is a node that matches the selector });
Он должен быть!--0-->, а не
getElementByClass. Смотрите это -https://developer.mozilla.org/en/DOM/document.getElementsByClassName.обратите внимание, что некоторые браузеры/версии могут не поддерживать эту.
перед прыжком в любой дальнейшей проверки ошибок, пожалуйста, сначала проверьте, является ли его
документ.getElementsсам ByClassName ().
дважды проверьте его getElements а не getElement
enter code here var stopMusicExt = document.getElementByClass("stopButton").value; stopButton.onclick = function() { var ta = document.getElementByClass("stopButton"); document['player'].stopMusicExt(ta.value); ta.value = ""; }; // .value will hold all data from class stopButton
document.querySelectorAllработает очень хорошо и позволяет еще больше сузить свой выбор.https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
Comments