Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   JS в отдельном файле (https://javascript.ru/forum/project/61152-js-v-otdelnom-fajjle.html)

rankery 06.02.2016 19:09

JS в отдельном файле
 
Здравствуйте. Я написал скрипт в html файле, который работал. Позже я решил его перенести в отдельный файл. Я устранил все ошибки, но он не работает. Возможно, я где-то неправильно объявил или обратился.

Вот код, который был в html файле:
<script>
            $(window).scroll(function () {
                "use strict";
                var element = $("#header"), display; 
                var element2 = $("#article").css({borderTopLeftRadius: 0, borderTopRightRadius: 0, borderBottomLeftRadius: 60, borderBottomRightRadius: 60 }); 
                display = $(window).scrollTop() < 200;
                display = element.css('opacity') && element.stop().animate({'opacity': display}, 500);
                
                if ($(window).scrollTop() < 200) {
                    element2.animate({'borderTopLeftRadius': 0, 'borderTopRightRadius': 0}, 200);
                } else {
                    element2.animate({'borderTopLeftRadius': 60, 'borderTopRightRadius': 60}, 200);
                }
            });
        </script>


Вот код, который у меня написан в файле .js:
(window).onscroll = function () {
    'use strict';
    var element = document.getElementById('header').css({opacity: 1}),
        element2 = document.getElementById('article').css({borderTopLeftRadius: 0, borderTopRightRadius: 0, borderBottomLeftRadius: 60, borderBottomRightRadius: 60});
    
    if (window.scrollY() < 200) {
        element.animate({'opacity': 1}, 500);
        element2.animate({'borderTopLeftRadius': 0, 'borderTopRightRadius': 0}, 200);
    } else {
        element.animate({'opacity': 0}, 500);
        element2.animate({'borderTopLeftRadius': 60, 'borderTopRightRadius': 60}, 200);
    }
};


Может кто показать мне мою ошибку? Буду очень благодарен.

рони 06.02.2016 20:50

rankery,
вы написали свою библиотеку для css, animate и прочего?

rankery 06.02.2016 22:07

Я написал функцию, которая запускается при скроле страницы. Она меняет стили элементов сайта если опустить ниже на определенное значение. Та, что выше, находилась в head html файла (работает). При попытки перенести ее в отдельный файл пришлось кое-что поменять, но работать она перестала. Возможно, я что-то неправильно записал там. На данный момент сама функция вызывается, но действия никакие не производятся.

рони 06.02.2016 22:15

rankery,
зачем что-то менять если оно работает,
Цитата:

Сообщение от rankery
document.getElementById('header').css

так писать очень неправильно

arnoldson 06.02.2016 22:23

попробуй var element = document.getElementById('header').css({opacity: 1}),
в конце поставить ; вместо ,

рони 06.02.2016 22:26

arnoldson,
тоесть это нормально что у элемента вдруг появилось свойство css?

rankery 06.02.2016 22:50

Цитата:

Сообщение от рони (Сообщение 406607)
rankery,
зачем что-то менять если оно работает, так писать очень неправильно

Работает только такой скрипт в html файле. Но так как скрипт будет не один, то я посчитал нужным перенести его в отдельный файл. Я не уверен, что в отдельном файле "document.getElementById('header').css.." будет работать, но в html файле работал "var element = $("#header").css({opacity: 1});", так что я попытался перенести его в отдельный файл примерно так же. Возможно там надо "window.$('#header').css.." или другой вариант.

rankery 06.02.2016 22:51

Цитата:

Сообщение от arnoldson (Сообщение 406610)
попробуй var element = document.getElementById('header').css({opacity: 1}),
в конце поставить ; вместо ,

У меня перечисление: для одного var`а два объекта.

polecat 11.02.2016 12:14

Это же jQuery?
Вы в файле значёк $ не потеряли?

А, хотя туплю.
В файле просто JS.
Или таки нет?

Меня смущает запись document.getElementById('header').css({opacity: 1})
Емнип, в JS это должно выглядеть как-то так:
document.getElementById('header').style.opacity = "1";

А вот это:
element2.animate({'borderTopLeftRadius': 0, 'borderTopRightRadius': 0}, 200);
вообще без jQuery не должно работать.

Или я чересчур дремучий, или у вас там смесь какая-то.

clecar 13.02.2016 00:51

Я решал такое просто, возвращаещся в работающий вариант и переносиш по отдельности функции. От джери конечно, лучше отказаться, неужели ещё не понятно что зто вообще прикол. Не смотрел что у тебя, но что я у себя впихивал, заменилось тремя словами.


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