Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 交叉点观察者不与兄弟节点一起工作_Javascript_Intersection Observer - Fatal编程技术网

Javascript 交叉点观察者不与兄弟节点一起工作

Javascript 交叉点观察者不与兄弟节点一起工作,javascript,intersection-observer,Javascript,Intersection Observer,我有一个装有4个孩子的flexbox容器,每个都有:50% 我想为每个子元素创建一个IO交点观察者,但由于某些原因,它只适用于1º和3º元素。。。但如果我为2º和4º元素创建一个新IO,它就可以工作了 我做错了什么 演示如下:您的代码如下所示: const watchContainer = ([entry]) => { console.log('IO card:', entry.target); entry.target.style.opacity = entry.isIn

我有一个装有4个孩子的flexbox容器,每个都有:50%

我想为每个子元素创建一个IO交点观察者,但由于某些原因,它只适用于1º和3º元素。。。但如果我为2º和4º元素创建一个新IO,它就可以工作了

我做错了什么


演示如下:

您的代码如下所示:

const watchContainer = ([entry]) => {
    console.log('IO card:', entry.target);
    entry.target.style.opacity = entry.isIntersecting ? '1' : '0';
};
const watchContainer = (entries) => {
    entries.forEach(entry => {
        console.log('IO card:', entry.target);
        entry.target.style.opacity = entry.isIntersecting ? '1' : '0';
    })
};
它必须是这样的:

const watchContainer = ([entry]) => {
    console.log('IO card:', entry.target);
    entry.target.style.opacity = entry.isIntersecting ? '1' : '0';
};
const watchContainer = (entries) => {
    entries.forEach(entry => {
        console.log('IO card:', entry.target);
        entry.target.style.opacity = entry.isIntersecting ? '1' : '0';
    })
};

按照您的方式,如果多个元素同时触发观察者,它将只在第一个元素上运行函数。按照我的方式,它会在匹配的每个条目上运行它。

您的代码如下:

const watchContainer = ([entry]) => {
    console.log('IO card:', entry.target);
    entry.target.style.opacity = entry.isIntersecting ? '1' : '0';
};
const watchContainer = (entries) => {
    entries.forEach(entry => {
        console.log('IO card:', entry.target);
        entry.target.style.opacity = entry.isIntersecting ? '1' : '0';
    })
};
它必须是这样的:

const watchContainer = ([entry]) => {
    console.log('IO card:', entry.target);
    entry.target.style.opacity = entry.isIntersecting ? '1' : '0';
};
const watchContainer = (entries) => {
    entries.forEach(entry => {
        console.log('IO card:', entry.target);
        entry.target.style.opacity = entry.isIntersecting ? '1' : '0';
    })
};

按照您的方式,如果多个元素同时触发观察者,它将只在第一个元素上运行函数。按照我的方式,它会在每个匹配的条目上运行。

没问题:希望我有更多的交叉口观察者经验,这是一个很酷的api。@sandrina-p如果它对您有帮助,请不要忘记将其标记为正确无问题:希望我有更多的交叉口观察者经验,这是一个很酷的api。@sandrina-p如果对您有帮助,请不要忘记将其标记为正确