Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сохранить ссылку на DOM element? (https://javascript.ru/forum/dom-window/10518-kak-sokhranit-ssylku-na-dom-element.html)

float 07.07.2010 23:29

Как сохранить ссылку на DOM element?
 
Собственно, предположим, у меня div без id.
Я хочу, допустим, чтобы при клике он плавно становился прозрачным.
Но как передать функции элемент?

subzey 08.07.2010 01:29

Просто передавайте в функцию.

function myFunc(object){
alert(object.innerHTML)
}

var myDiv = document.createElement("div");
myDiv.appendChild(document.createTextNode("test"));
myFunc(myDiv)


Или вы говорите про this?

<div onclick="alert(this.innerHTML)">test</div>

Gvozd 08.07.2010 02:22

http://javascript.ru/tutorial/dom

pandasensey 08.07.2010 12:22

Просто диву пропиши:
<div onClick="changeOpacity(this)"/>

а в функции changeOpacity работаете с пришедшим аргументом как со ссылкой на div:
function changeOpacity(obj) {
  obj.style.opacity = '0.5'; //Это например, ибо opacity - очень некросброузерная штука
}

float 08.07.2010 18:20

Ммм... Постараюсь объяснить понятнее)

1. Подразумевается, что функция обработчик должна допустим:
а. читать текущее value параметра
б. изменять его в соответствии с алговритмом и value параметра
2. Что она через setInterval будет вызываться, пока value не достигнет опр. значения(opacity: 1 например)
3. при загрузке страницы, запускается js, который вешает скажем, на все теги samp функции обработчики, c единственным параметром(this)

Наподобие fadein/fadeout в Jquery.

В принципе я знаю несколько вариантов реализации, но по производительности они больно не очень:D
Читал статью про Closures, подумал нельзя ли применить...

float 08.07.2010 19:34

Цитата:

Читал статью про Closures, подумал нельзя ли применить...
function callLater(paramA, paramB, paramC){
    /* Return a reference to an anonymous inner function created
       with a function expression:-
    */
    return (function(){
        /* This inner function is to be executed with - setTimeout
           - and when it is executed it can read, and act upon, the
           parameters passed to the outer function:-
        */
        paramA[paramB] = paramC;
    });
}

...

/* Call the function that will return a reference to the inner function
   object created in its execution context. Passing the parameters that
   the inner function will use when it is eventually executed as
   arguments to the outer function. The returned reference to the inner
   function object is assigned to a local variable:-
*/
var functRef = callLater(elStyle, "display", "none");
/* Call the setTimeout function, passing the reference to the inner
   function assigned to the - functRef - variable as the first argument:-
*/
hideMenu=setTimeout(functRef, 500);


тут надо создавать глобальную переменную, а заранее с this не прокатит...

float 08.07.2010 23:36

Всё! Попыжился, попыжился и сделал.
Всё прекрасно. 2 функции, 3 тоесть если модифаер учитывать и некаких обходов DOM в цикле)))
Если кому интересно могу выложить.

Corathir 17.06.2020 12:02

Цитата:

Сообщение от float (Сообщение 62863)
Всё! Попыжился, попыжился и сделал.
Всё прекрасно. 2 функции, 3 тоесть если модифаер учитывать и некаких обходов DOM в цикле)))
Если кому интересно могу выложить.

Надо было выложить
Эх, никакого уважения к потомкам...


Часовой пояс GMT +3, время: 12:40.