Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2013, 15:32
Аватар для max0n
Аспирант
Отправить личное сообщение для max0n Посмотреть профиль Найти все сообщения от max0n
 
Регистрация: 23.05.2012
Сообщений: 44

Получение DOM к соседнему тегу
всем привет... есть код:
....
<div>
	<canvas></canvas>
	<script>
		window.onscroll = function() {getCanvas();}
	</script>
	<p>....</p>
</div>
....
много кода....
....
<div>
	<canvas></canvas>
	<script>
		window.onscroll = function() {getCanvas();}
	</script>
	<p>....</p>
</div>
....


собственно мне нужно функцией «getCanvas();», через DOM получить соседний canvas. для каждой вызванной функции канвас должен быть соседним.
как это реализовать? есть идеи?

P.S. id для канваса не предлагать... хочу автоматизировать определение соседнего канваса
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2013, 15:36
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

function getNextCanvas(currentCanvas) {
    var elements = document.getElementsByTagName('canvas');
    for(var i = 0; i < elements.length; i++) {
        if (currentCanvas === elements[i]) {
            return elements[i + 1] || null;
        }
    }
    return null;
}
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2013, 15:44
Аватар для max0n
Аспирант
Отправить личное сообщение для max0n Посмотреть профиль Найти все сообщения от max0n
 
Регистрация: 23.05.2012
Сообщений: 44

чтото не могу понять.... "getNextCanvas();" я должен использовать вместо "getCanvas();"?
что за параметр я должен передовать в "currentCanvas"?
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2013, 15:45
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от max0n
я должен использовать вместо "getCanvas();"?
а что у вас делает метод getCanvas?

Сообщение от max0n
что за параметр я должен передовать в "currentCanvas"?
ссылку на предыдущий канвас
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 02.07.2013, 15:55
Аватар для max0n
Аспирант
Отправить личное сообщение для max0n Посмотреть профиль Найти все сообщения от max0n
 
Регистрация: 23.05.2012
Сообщений: 44

Сообщение от devote Посмотреть сообщение
а что у вас делает метод getCanvas?
эта функция, которая должна получить canvas, который был объявлен перед скриптом. Только я незнаю как это реализовать.

Может ли функция получить DOM объект, где находится вызов самой функции?
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2013, 18:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от max0n
        window.onscroll = function() {getCanvas();}
Сообщение от max0n
        window.onscroll = function() {getCanvas();}
А зачем два раза писать один и тот же код? Это типа "для надежности" ))) ?
Ответить с цитированием
  #7 (permalink)  
Старый 02.07.2013, 18:55
Аватар для max0n
Аспирант
Отправить личное сообщение для max0n Посмотреть профиль Найти все сообщения от max0n
 
Регистрация: 23.05.2012
Сообщений: 44

нет... смотри...
в каждой части кода, эта функция должна выполниться 1 раз каждая.
крометого... каждой функции, я буду передавать параметры для дополнительной обработки (для каждой свои).
и несмотря на то что я передаю этой функции... она должна выполниться в нужное для меня время, с введёнными мной параметрами и только 1 раз каждая.

встретиться она может и одна на странице.

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

так ведь функция не будет выполнена сразу. Ты же навешиваешь событие, используя старушку-модель DOM левел 1. Вот только через мгновение твое только что определенное тобой свойство window.onscroll затрется другой функцией, следующей. А старая будет уничтожена сборщиком мусора как ненужный хлам. Модель обработчиков событий DOM Level 1 не предусматривает возможности добавить несколько обработчиков.
Ответить с цитированием
  #9 (permalink)  
Старый 02.07.2013, 19:14
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Вобще тебе стоит задуматься над архитектурой.
Зачем плодить теги скриптов? Зачем плодить обработчики (тем более на такое чувствительное к производительности событие как scroll )?
Создай один скрипт, обойди все канвасы, навесь обработчик скролла (один!), который и будет всем рулить.
Ответить с цитированием
  #10 (permalink)  
Старый 03.07.2013, 12:57
Аватар для max0n
Аспирант
Отправить личное сообщение для max0n Посмотреть профиль Найти все сообщения от max0n
 
Регистрация: 23.05.2012
Сообщений: 44

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

пуши аналогичную фишку на свой сайт.... но у меня она может встретиться 1 раз... а может несколько на странице.

как сделать такое? может поможешь?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(DOM) JQuery получение текста ссылки Mila Общие вопросы Javascript 5 25.04.2012 13:36
Получить список ВСЕХ элементов DOM Почемучкин Events/DOM/Window 7 16.04.2012 11:33
Новый элемент отсутствует в DOM модели StrSprut jQuery 4 19.09.2011 12:50
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26
Получение текстового содержимого из всех вложенных DOM EmDmAl Events/DOM/Window 8 02.12.2009 23:38