querySelectorAll(els)
Есть функция
var $ = function(el) { return document.querySelectorAll(el); } прекрасно работает, но не очень удобна в использовании. Решил переписать ее типа jQuery (function() { function $(els) { this.elements = []; this.elements = document.querySelectorAll(els); return this; } $.prototype ={ size: function() { alert('size:'+this.elements.length); return this; }, и т.д. выдает SyntaxError: An invalid or illegal string was specified elms = document.querySelectorAll(els); вместо elms = document.querySelectorAll(els); использовал var nodesArray = Array.prototype.slice.call(document.querySelectorA ll(els)); все равно выдает SyntaxError: An invalid or illegal string was specified var nodesArray = Array.prototype.slice.call(document.querySelectorA ll(els)); в чем SyntaxError, не пойму? подскажите? |
Оформи код.
Добавь демку. Или хотя бы покажи как ты вызываешь функцию. И где ключевое слово var для elms |
var $ = function(selector) {
if(this.$) return new $(selector);
this.elems = document.querySelectorAll(selector);
}
$.prototype = {
size: function() {
return this.elems.length;
}
}
alert( $('body').size() );
|
Спасибо Ruslan_xDD за работающий код!
Но можно ли туже функцию $ оформить как немедленно вызываемую функцию (function () { код }()); ? Просто под это уже много кода написано... |
Вроде все просто, но на строку this.elements = document.querySelectorAll(els); выдает SyntaxError
Пробовал this.elements = Array.prototype.slice.call(document.querySelectorA ll(els)); тоже SyntaxError Меня большевсего бесит именно SyntaxError, какой SyntaxError в таких простых строках? Подскажите! |
Полный код тут запости в
[js run] .. [/js] |
(function() {
function _$(els) {
this.elements = [];
this.elements = Array.prototype.slice.call(document.querySelectorAll(els));
return this;
}
_$.prototype ={
size: function() {
alert('size:'+this.elements.length);
return this;
}
};
window.$ = function() { return new _$(arguments); }
})();
Использование $('#test').size(); |
Цитата:
alert( (function() { return arguments.toString() })('body') );
|
Да вроде эта строка работает, ошибок на эту строку нет.
И вообще если вместо querySelectorAll использовать this.elements.push(document.getElementById(els)); то все нормально работает. Почему querySelectorAll вызывает SyntaxError, не пойму. |
Цитата:
document.querySelectorAll('!@#$%^&*()_')
Ошибка в селекторе, а не в джаваскрипте. |
$('#test') $('.test') - поиск простых селекторов, разве здесь есть ошибки?
|
(function() {
function _$(els) {
this.elements = [];
this.elements = Array.prototype.slice.call(document.querySelectorAll(els));
return this;
}
_$.prototype ={
size: function() {
alert('size:'+this.elements.length);
return this;
}
};
window.$ = function(args) { return new _$(args); }
})();
|
Цитата:
SyntaxError: An invalid or illegal string was specified |
amt35, я смотрю ты комменты через один читаешь.
Я ведь уже демонстрировал твой косяк: http://javascript.ru/forum/events/41...tml#post274445 |
document.querySelectorAll('[object Arguments]')
|
Спасибо devote! Действительно тупейшая ошибка. querySelectorAll принимает как аргумент строку, даже если это запрос типа ''#test1, #test2, #test3''.
Извини danik.js , я не понял твой комментарий. |
| Часовой пояс GMT +3, время: 03:41. |