2013-02-17 57 views
0

以下情況:GET值調整功能,並把它的另一個功能

var height = $(window).height(); 
$(window).resize(function() { 
var getfactor1 = 680/697 
var posval1 = height*getfactor1 
}); 

,並在另一個函數我有以下幾點:

if($firstBG.hasClass("inview")){ 
$firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
    } 

我怎樣才能得到posval1中的價值每當用戶縮放瀏覽器窗口時,window.resize()函數將放入firstBG.css中。

謝謝!

回答

0

爲什麼你不把$ firstBG.css()放到window.resize()中?

+0

,因爲它在另一個功能! – supersize 2013-02-17 19:28:20

1

或者你可以嘗試通過它低谷的函數:

var height = $(window).height(); 
$(window).resize(function() { 
var getfactor1 = 680/697 
var posval1 = height*getfactor1 

myFunction(posval1); 

}); 

function myFunction(posval1){ 
    if($firstBG.hasClass("inview")){ 
    $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
    } 
} 
1

或者,更簡單,你爲什麼不申報窗外posval1調整功能?

var height = $(window).height(), 
    posval1; 

$(window).resize(function() { 
    var getfactor1 = 680/697; 
    posval1 = height*getfactor1; 
}); 

if($firstBG.hasClass("inview")){ 
    $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
} 
+0

你沒有得到我的觀點,我需要在窗口調整大小函數posval1的值。 if firstBG類應該如何從調整大小函數中獲取值? – supersize 2013-02-17 19:37:47

+0

這裏的問題是posval1變量是在窗口調整大小函數內聲明的,所以它是有效的並且只能在這個函數內部訪問。如果你在兩個函數之外聲明瞭posval1,那麼它的作用域就變成一般了,你可以從兩者中訪問(當我說我的意思是讀寫)。 – 2013-02-18 09:40:48

0

每次用戶調整窗口大小時都會發生調整大小事件。如果您想更改某些內容,則必須從該事件的處理程序完成,否則值不會更新。但通常,如果posval1變量的範圍比resize事件處理程序的範圍更高,那麼也可以從其他位置訪問它,但正如我所說的,除非在事件處理程序中,否則代碼的其他部分將不會再次執行。

範圍例如:

var posval1; 

$(window).on('resize', function() { 
    posval1 = height * (680/697); 
}); 

// somewhere else 
console.log(posval1); 

posval1值是最有可能在執行到達但是console.log()的時間是不確定的,因爲窗口尚未調整。 可能所做的只是將CSS更新外包給另一個函數,並從事件處理函數以及在開始時調用它。

var windowHeight, pos, posval1; // etc 

var updateBg = function() { 
    if($firstBG.hasClass("inview")){ 
    $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
    } 
}; 

updateBg(); // once 

$(window).on('resize', function() { 
    // calculate posval1 
    updateBg(); // every time on resize 
}); 
+0

感謝您的回答,這對我來說似乎是合乎邏輯的,但我無法得到它的工作......我會用全碼發佈另一個答案! – supersize 2013-02-17 19:49:06

0
function newPos(x, windowHeight, pos, adjuster, inertia){ 
    return x + "% " + (-((windowHeight + pos) - adjuster) * inertia) + "px"; 
} 



function Move(){ 
    var pos = $window.scrollTop(); 


    if($firstBG.hasClass("inview")){ 
     var getfactor1 = 680/697; 
     var posval1 = height*getfactor1; 
     console.log(posval1); 
     $firstBG.css({'backgroundPosition': newPos(0, windowHeight, pos, posval1, 0.3)}); 
    } 



    if($secondBG.hasClass("inview")){ 
     var getfactor2 = 1255/697; 
     var posval2 = height*getfactor2; 

.......等等