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.
685   2  

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

    Ничего не найдено.