Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не передается параметр в функцию (https://javascript.ru/forum/misc/53681-ne-peredaetsya-parametr-v-funkciyu.html)

Velidan 13.02.2015 13:50

Не передается параметр в функцию
 
Доброго дня уважаемые коллеги. Столкнулся с проблемой и никак не могу решить. Помогите пожалуйста.
Есть кусочек кода:
Задумка такая (написал функцию плавного скролла к верху страницы при нажатии на элемент - анимацию делаю попиксельным изменением scrollTo при помощи setInterval. Хочу сделать так, что если, в момент анимации, мы покрутили колесиком - анимация остановилась).

Во общем отлавливаю прокрутку колесика, но никак не могу передать ID интервала внутрь EventListerer функции (там в z - содержится не Id интервала, а object WhellElement. (это логично ибо мы ловим как раз прокрутку колесика)

Но как мне передать в параметре Id интервала ?
Спасибо за любую помощь.
Код JavaScript
function scrollReset(scrollToTop){  //важно! поддержка в старых браузерах не гарантируется
    var z = scrollToTop;
        if ('onwheel' in document) {
            document.addEventListener ("wheel", function(z){
                alert(z);
                clearInterval(z);
            }, false);
        }
 
}

d.skuratovich 13.02.2015 14:06

Velidan, проблема в том, что у тебя одинаковые имена переменных

Velidan 13.02.2015 14:22

d.skuratovich Спасибо большое за ответ.
А как правильнее сделать? (ведь я присваиваю z - scrollToTop который передается извне, а после эту z - передаю во "внутреннюю" функцию для дальнейшей работы с ним). Что я не так делаю?

Сделал вот так:
function scrollReset(scrollToTop){  //важно! поддержка в старых браузерах не гарантируется
    var id = scrollToTop ;
        if ('onwheel' in document) {
            document.addEventListener ("wheel", function(){
                clearInterval(id);
                alert(id);
            }, false);
        }

}

И все заработало. Переменная которую получила родительская ф-ция, по умолчанию доступна для "дочерней".
Не знал этого. Почитаю еще о областях видимости.

Спасибо большое за подсказку и ответ.


П.С. если не трудно - объясните пожалуйста вкратце, почему мой первый вариант с присваиванием и передачей не заработал?

caetus 13.02.2015 15:32

<script>
document.addEventListener("click", function(z){alert(z);},false)

</script>

в consol покажет события так же и у тебя было !!!


addEventListener // передает аргумент события !!


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