Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 17.11.2014, 23:12
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Pechen
примеры выше не работают в старых браузерах. я стараюсь избегать таких методов
Чет не похоже. indexOf не работает даже в IE8. Тогда как querySelector, вместо которого у тебя велосипед - работает в нем.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #42 (permalink)  
Старый 17.11.2014, 23:15
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от рони
что не так?
Да даже код Pechen и тот лучше. Может он не правильный, но когда я смотрю на него - без напряга понимаю что он делает.

У тебя же раздутые строки и неявный if. Еще непонятно что на 18 строке.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #43 (permalink)  
Старый 17.11.2014, 23:17
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Неявный if еще можно использовать в примерно таких случаях:

hasAttr || addAttr();

dirtyFlag && updateSmth();


Тут это наоборот упрощает код и его чтение.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #44 (permalink)  
Старый 18.11.2014, 00:43
Новичок на форуме
Отправить личное сообщение для Pechen Посмотреть профиль Найти все сообщения от Pechen
 
Регистрация: 16.11.2014
Сообщений: 5

Сообщение от danik.js Посмотреть сообщение
indexOf не работает даже в IE8. Тогда как querySelector, вместо которого у тебя велосипед - работает в нем.
ага не заметил -- смотрел у стринга)) так лучше? как обойтись без call, чтоб работало как с indexOf? крутил по-всякому)

<!DOCTYPE HTML>
<html>
  <head></head>
  <body>
    <div class="a">Div 1</div>
    <div class="a">Div 2</div>
    <div class="a">Div 3</div>
    <div class="a">Div 4</div>
    <div class="a">Div 5</div>

    <script>
	var elem = document.getElementsByTagName('div');
	var elements = [];
	for(var i=0; i<elem.length;i++){
		var option = elem[i].className;
		if(option=='a'){
			elements.push(elem[i]);
		}
	}
	for(var j=0;j<elements.length;j++){
		elements[j].onclick  = function () {
			alert(myIndexOf.call(elements, this));
			}
	}
	function myIndexOf(elemento){
		for(var i=0;i<this.length;i++){
			if(elemento == this[i])
				return i;
		}
	}
    </script>

  </body>
</html>
Ответить с цитированием
  #45 (permalink)  
Старый 18.11.2014, 05:35
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Pechen, половина кода лишняя. Используй querySelectorAll.
Если в IE нет indexOf, то проще обойтись без него. Используй замыкания либо пиши индекс в data-атрибут.
Если же хочешь indexOf, то к чему пляски с call? Делай вызов напрямую. Можешь кстати на прототипе объявить, только делай тогда нормальную реализацию (возьми из ES5-shim)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #46 (permalink)  
Старый 18.11.2014, 06:28
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Пять страниц секса с мозгом. Селектить по атрибуту необходимо когда элементы с этим атрибутом рассеяны в пространстве сферического коня в вакууме.

А когда все элементы с таким атрибутом в куче, то любой нормальный верстак добавит им всем родителя через которого и будет общаться с потомками любой нормальный программист.
Ответить с цитированием
  #47 (permalink)  
Старый 18.11.2014, 06:32
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от danik.js
либо пиши индекс в data-атрибут.
Само собой разумеется что всю коллекцию надо один раз проиндексировать чтобы не вертеть ее на сексе при каждом чихе.


Например типовая задача произвольного доступа.

щелчок на N

если N+1 < L то следующий N+1 иначе следующий 0
если N-1 > 0 то предыдущий N-1 иначе предыдущий L-1

Где взять N? Разумеется из data-index
Ответить с цитированием
  #48 (permalink)  
Старый 18.11.2014, 09:45
Новичок на форуме
Отправить личное сообщение для Pechen Посмотреть профиль Найти все сообщения от Pechen
 
Регистрация: 16.11.2014
Сообщений: 5

Сообщение от danik.js Посмотреть сообщение
Если же хочешь indexOf
не хочу) у меня ж своя функция там была myIndexOf и я спрашивал как ее запустить методом моего массива без явного call)
с замыканиями мне еще предстоит познакомиться, а на счет дата атрибутов тоже только узнал и мне показалось такое решение менее изящным чем добавление по свойству каждому элементу.

<!DOCTYPE HTML>
<html>
  <head></head>
  <body>
    <div class="a">Div 1</div>
    <div class="a">Div 2</div>
    <div class="a">Div 3</div>
    <div class="a">Div 4</div>
    <div class="a">Div 5</div>

    <script>
	var elements = document.querySelectorAll('div.a');
	for(var j=0;j<elements.length;j++){
        elements[j].index = j;
		elements[j].onclick  = function () {
			alert(this.index );
		}
	}
    </script>

  </body>
</html>
Ответить с цитированием
  #49 (permalink)  
Старый 18.11.2014, 09:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Pechen
я спрашивал как ее запустить методом моего массива без явного call
Я ж говорю - объяви на прототипе массива. он находится в Array.prototype.
Но за это могут и п*зды дать.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Как получить innerHTML при клике prope Общие вопросы Javascript 3 10.01.2014 17:13
Изменение размера элемента при клике Derekovich Элементы интерфейса 25 05.12.2013 20:45
Смена фона картинки при клике на иконку Letto Элементы интерфейса 2 08.11.2013 18:31
Изменение фона элемента при клике. psydo Элементы интерфейса 8 28.06.2012 23:53