Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.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_Html_Jquery_Css - Fatal编程技术网

javascript从链函数获取属性

javascript从链函数获取属性,javascript,html,jquery,css,Javascript,Html,Jquery,Css,我需要做一个像“device.browser.scroll().top”这样的函数。我如何让一个函数做到这一点,并从和对象中获取值,我的代码总是说未定义 let device={}; device.browser={}; device.browser.scroll=(el=窗口)=>{ 返回{ 顶部:el.pageXOffset | | el.scrollLeft, 左:el.pageYOffset | | el.scrollTop, } } console.log('scrollTop',d

我需要做一个像“device.browser.scroll().top”这样的函数。我如何让一个函数做到这一点,并从和对象中获取值,我的代码总是说未定义

let device={};
device.browser={};
device.browser.scroll=(el=窗口)=>{
返回{
顶部:el.pageXOffset | | el.scrollLeft,
左:el.pageYOffset | | el.scrollTop,
}
}
console.log('scrollTop',device.browser.scroll().top)
html,正文{
身高:100%;
}
.包装部{
高度:100vh;
}
.wrapper分区:第n个子项(1){
背景:红色;
}
.wrapper分区:第n个子项(2){
背景:绿色;
}
.wrapper分区:第n个子项(3){
背景:蓝色
}

问题在于,如果左侧为假,而0为假,尽管包含所需的数字信息,
|
将计算到右侧。您可以改为使用
,如果左侧是
未定义的
空的
,则只对右侧求值:

return {
  top: el.pageXOffset ?? el.scrollLeft,
  Left: el.pageYOffset ?? el.scrollTop,
}
let device={};
device.browser={};
device.browser.scroll=(el=窗口)=>{
返回{
顶部:el.pageXOffset??el.scrollLeft,
左:el.pageYOffset??el.scrollTop,
}
}
console.log('scrollTop',device.browser.scroll().top)
html,正文{
身高:100%;
}
.包装部{
高度:100vh;
}
.wrapper分区:第n个子项(1){
背景:红色;
}
.wrapper分区:第n个子项(2){
背景:绿色;
}
.wrapper分区:第n个子项(3){
背景:蓝色
}


为什么top值总是0?在这些代码段中,它是0,但这只是因为脚本在pageload上运行,而且在pageload上,页面根本没有滚动过。如果在pageload之后以及在用户垂直/水平滚动之后运行它,您将看到非0值。我尝试了方向更改事件,但在向下滚动页面后,它仍然为零