Javascript JS函数单独工作,但不能一起工作

Javascript JS函数单独工作,但不能一起工作,javascript,function,Javascript,Function,我使用两个函数来移动背景位置和缩放div的背景。这是: (function(shifting) { var parallax = document.querySelectorAll(".shiftparallax"), speed = -0.05; window.onscroll = function() { [].slice.call(parallax).forEach(function(el, i) { var w

我使用两个函数来移动背景位置和缩放div的背景。这是:

(function(shifting) {

    var parallax = document.querySelectorAll(".shiftparallax"),
        speed = -0.05;

    window.onscroll = function() {
        [].slice.call(parallax).forEach(function(el, i) {

            var windowXOffset = window.pageYOffset,
                elBackgrounPos = (windowXOffset * speed) + "px";
            console.log(elBackgrounPos);
            el.style.backgroundPositionY = elBackgrounPos;

        });
    };

})();


(function(zooming) {
    var parallaxfacts = document.querySelectorAll(".parallaxfacts"),
        constantsize = 100;
    speed = -0.03;
    window.onscroll = function() {

        if (window.innerWidth > 1024) {
            [].slice.call(parallaxfacts).forEach(function(el, i) {

                var windowXOffset = window.pageYOffset,
                    elBackgrounScale = (windowXOffset / 950 * constantsize) + "%";

                el.style.backgroundSize = elBackgrounScale;

            });
        }
    };

})();

问题是,我需要它们同时运行,但它们只能单独运行。如果它们都是这样写的——第二个只运行,第一个什么也不做。如果我移除第二个,第一个开始工作。我最近对JS有点生疏,所以我想不出来。有什么方法可以使它们都工作吗?

覆盖window.onscroll事件

请尝试以下两行:

window.onscroll = el => console.log ('first');
window.onscroll = el => console.log ('second');
使用以下代码

window.addEventListener('scroll',  el => console.log ('firstlistener'));
window.addEventListener('scroll',  el => console.log ('secondlistener'));

覆盖window.onscroll事件

请尝试以下两行:

window.onscroll = el => console.log ('first');
window.onscroll = el => console.log ('second');
使用以下代码

window.addEventListener('scroll',  el => console.log ('firstlistener'));
window.addEventListener('scroll',  el => console.log ('secondlistener'));

您将分配给
window.onscroll
两次。这意味着第二个处理程序“注销”第一个处理程序

您可以使用
addEventListener
在两个函数中侦听事件:

window.addEventListener("scroll", function() { /* function 1*/ });
window.addEventListener("scroll", function() { /* function 2*/ });

您将分配给
window.onscroll
两次。这意味着第二个处理程序“注销”第一个处理程序

您可以使用
addEventListener
在两个函数中侦听事件:

window.addEventListener("scroll", function() { /* function 1*/ });
window.addEventListener("scroll", function() { /* function 2*/ });

请说明您如何调用函数,以及在什么条件下调用。@Difster他们是生命(他们称自己)。请说明您如何调用函数,以及在什么条件下调用。@Difster他们是生命(他们称自己)。这样做了。我不知道他们互相取消了。非常感谢。它就像其他任何财产一样;如果你
a={};a、 x=1;a、 x=2
x
最后是
2
,因为属性只能有一个值。这就解决了问题。我不知道他们互相取消了。非常感谢。它就像其他任何财产一样;如果你
a={};a、 x=1;a、 x=2
x
在末尾是
2
,因为属性只能有一个值。不要在此处使用
el
。它用作内部函数中的变量。是的,您还可以编写:
window.addEventListener('scroll',()=>console.log('secondlistener')不要在此处使用
el
。它用作内部函数中的变量。是的,您还可以编写:
window.addEventListener('scroll',()=>console.log('secondlistener')