作为一个javascript noob,我在理解如何在提供的示例中从函数到另一个函数中获取变量时遇到了一些麻烦。
我想使用xx.projects.resize
中xx.projects.item.next
中设置的winHeight(你在那里看到console.log(winHeight))。
我应该在这看什么?
var xx = {
init: function()
{
xx.listener.init()
},
listener: {
init: function()
{
xx.listener.resize()
},
resize: function()
{
xx.projects.resize()
$(window).on('resize',function(){
xx.projects.resize()
})
},
},
projects: {
resize: function()
{
var $display = $('section .item.curr');
var $displayNotActive = $('section.curr .item.next, section.curr .item.prev');
var winWidth = $(window).width();
var winHeight = $(window).height();
var containerWidth, containerHeight;
if(winWidth > 1450) {
if(winHeight > 1050) {
containerWidth = 1200;
containerHeight = 900;
} else {
containerWidth = winWidth - 250;
var helperHeight = Math.floor(containerWidth * 3/4);
if(helperHeight > (winHeight - 150)) {
containerHeight = winHeight - 150;
containerWidth = Math.floor(containerHeight * 4/3);
} else {
containerHeight = helperHeight;
}
}
} else if(winWidth < 600) {
containerWidth = 300;
containerHeight = 225;
} else {
containerWidth = winWidth - 250;
var helperHeight = Math.floor(containerWidth * 3/4);
if(helperHeight > (winHeight - 150)) {
containerHeight = winHeight - 150;
containerWidth = Math.floor(containerHeight * 4/3);
} else {
containerHeight = helperHeight;
}
}
},
item: {
next: function()
{
var s = $('#projects section.curr')
a = s.find('.item.curr'),
n = a.next('.item'),
l = a.position()
console.log(winHeight);
if( n.length > 0 ){
a.animate({ left: '-100%' }, ep.projects.config.item.speed, ep.projects.config.item.easing)
n.animate({ left: l.left }, ep.projects.config.item.speed, ep.projects.config.item.easing, function(){
a.removeClass('curr').addClass('prev')
n.removeClass('next').addClass('curr')
})
}
},
},
}
}
$(document).on('ready', xx.init) // Document loaded, DOM ready
答案 0 :(得分:0)
在对象范围内声明winHeight
和winWidth
,并使用this.winWidth
和this.winHeight
访问它。
var xx = {
projects: {
resize: function () {
//we are saving winWidth, winHeight in the projects object scope so that it can be accessed from other functions in the same scope
this.winWidth = $(window).width();
this.winHeight = $(window).height();
var containerWidth, containerHeight;
if (this.winWidth > 1450) {
if (this.winHeight > 1050) {
containerWidth = 1200;
containerHeight = 900;
} else {
containerWidth = this.winWidth - 250;
var helperHeight = Math.floor(containerWidth * 3 / 4);
if (helperHeight > (this.winHeight - 150)) {
containerHeight = this.winHeight - 150;
containerWidth = Math.floor(containerHeight * 4 / 3);
} else {
containerHeight = helperHeight;
}
}
} else if (winWidth < 600) {
containerWidth = 300;
containerHeight = 225;
} else {
containerWidth = this.winWidth - 250;
var helperHeight = Math.floor(containerWidth * 3 / 4);
if (helperHeight > (this.winHeight - 150)) {
containerHeight = this.winHeight - 150;
containerWidth = Math.floor(containerHeight * 4 / 3);
} else {
containerHeight = helperHeight;
}
}
},
item: {
next: function () {
var s = $('#projects section.curr')
a = s.find('.item.curr'),
n = a.next('.item'),
l = a.position()
console.log(this.winHeight);
if (n.length > 0) {
a.animate({
left: '-100%'
}, ep.projects.config.item.speed, ep.projects.config.item.easing)
n.animate({
left: l.left
}, ep.projects.config.item.speed, ep.projects.config.item.easing, function () {
a.removeClass('curr').addClass('prev')
n.removeClass('next').addClass('curr')
})
}
},
},
}
}