Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.09.2013, 10:21
Интересующийся
Отправить личное сообщение для amt35 Посмотреть профиль Найти все сообщения от amt35
 
Регистрация: 26.09.2013
Сообщений: 14

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, не пойму? подскажите?

Последний раз редактировалось amt35, 30.09.2013 в 18:31.
Ответить с цитированием
  #2 (permalink)  
Старый 28.09.2013, 14:38
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Оформи код.
Добавь демку. Или хотя бы покажи как ты вызываешь функцию.
И где ключевое слово var для elms
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 28.09.2013, 16:23
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var $ = function(selector) {
   if(this.$) return new $(selector);
   this.elems = document.querySelectorAll(selector);
}

$.prototype = {
   size: function() {
      return this.elems.length;
   }
}

alert( $('body').size() );
Ответить с цитированием
  #4 (permalink)  
Старый 30.09.2013, 15:17
Интересующийся
Отправить личное сообщение для amt35 Посмотреть профиль Найти все сообщения от amt35
 
Регистрация: 26.09.2013
Сообщений: 14

Спасибо Ruslan_xDD за работающий код!
Но можно ли туже функцию $ оформить как немедленно вызываемую функцию (function () { код }()); ? Просто под это уже много кода написано...
Ответить с цитированием
  #5 (permalink)  
Старый 30.09.2013, 18:32
Интересующийся
Отправить личное сообщение для amt35 Посмотреть профиль Найти все сообщения от amt35
 
Регистрация: 26.09.2013
Сообщений: 14

Вроде все просто, но на строку this.elements = document.querySelectorAll(els); выдает SyntaxError
Пробовал this.elements = Array.prototype.slice.call(document.querySelectorA ll(els)); тоже SyntaxError
Меня большевсего бесит именно SyntaxError, какой SyntaxError в таких простых строках?
Подскажите!
Ответить с цитированием
  #6 (permalink)  
Старый 30.09.2013, 18:52
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Полный код тут запости в
[js run] .. [/js]
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 30.09.2013, 19:12
Интересующийся
Отправить личное сообщение для amt35 Посмотреть профиль Найти все сообщения от amt35
 
Регистрация: 26.09.2013
Сообщений: 14

(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();

Последний раз редактировалось amt35, 30.09.2013 в 19:18.
Ответить с цитированием
  #8 (permalink)  
Старый 30.09.2013, 19:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от amt35
    window.$ = function() { return new _$(arguments); }
Ты че чудишь?
alert( (function() { return arguments.toString() })('body') );
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 30.09.2013, 19:34
Интересующийся
Отправить личное сообщение для amt35 Посмотреть профиль Найти все сообщения от amt35
 
Регистрация: 26.09.2013
Сообщений: 14

Да вроде эта строка работает, ошибок на эту строку нет.
И вообще если вместо querySelectorAll использовать
this.elements.push(document.getElementById(els));
то все нормально работает.
Почему querySelectorAll вызывает SyntaxError, не пойму.
Ответить с цитированием
  #10 (permalink)  
Старый 30.09.2013, 19:52
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от amt35
Почему querySelectorAll вызывает SyntaxError, не пойму.
document.querySelectorAll('!@#$%^&*()_')

Ошибка в селекторе, а не в джаваскрипте.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск