Uncaught SyntaxError: не удалось выполнить 'querySelector' на 'Document'
'<button id="'+item['id']+'" class="btnDeactivateKeyInChildPremiumCustomer waves-effect waves-light>ok</button>'
Я использовал приведенный выше код для генерации кнопки внутри каждой функции jquery.Кнопка создается динамически , и когда я нажимаю кнопку, она должна показывать прогресс на кнопке.
Я использую этот загрузчик кнопокLadda .
btnDeactivateKeyInChildPremiumCustomerClick : function(event){
var id = event.currentTarget.id;
var btnProgress = Ladda.create(document.querySelector('#'+id));
//btnProgress.start(); or //btnProgress.stop();
}
А затем я передал кнопку обработчику событий catch the event process вышеуказанной функции.Внутри этой функции он создаст объектbtnProgress .
После этого я могу вызвать функции start() или stop ().Я успешно работал в случай только одной кнопки без создания кнопки динамически внутри каждой . Но в каждом случае он показывает некоторые ошибки при выполнении var btnProgress = Ladda.создать документ.querySelector ('#'+id));
Ошибка
Uncaught SyntaxError: Failed to execute 'querySelector' on 'Document': '#22' is not a valid selector.
2 ответов:
В документах HTML5 разрешается использовать идентификаторы , начинающиеся с цифры:
Значение должно быть уникальным среди всех идентификаторов в домашнем поддереве элемента и содержать хотя бы один символ. Значение не должно содержать пробелов.Нет никаких других ограничений на то, какую форму может принимать идентификатор; в частности, идентификаторы могут состоять только из цифр, начинаться с цифры, начинаться с подчеркивания, состоять только из знаков препинания, и т.д.
Но
querySelectorметод использует CSS3 селекторы для запроса DOM и CSS3 не поддерживает селекторы идентификаторов, которые начинаются с цифры:В CSS идентификаторы (включая имена элементов, классы и идентификаторы в селекторах) могут содержать только символы [a-zA-Z0-9] и ISO 10646 символов U+00A0 и выше, плюс дефис ( - ) и подчеркивание ( _ ); они не могут начинаться с цифры, двух дефисов или дефиса, за которым следует цифра.
Используйте значение типа
b22для Атрибут ID и ваш код будут работать.Поскольку вы хотите выбрать элемент по идентификатору, вы также можете использовать метод
.getElementById:document.getElementById('22')
Хотя это допустимо в HTML, вы не можете использовать идентификатор, начинающийся с целого числа в CSS селекторах .
Как указывалось, вы можете использовать
getElementByIdвместо этого, но вы также можете достичь того же с помощьюquerySelector:document.querySelector("[id='22']")
Comments