2013-11-28 49 views
1

警告:我已經完成以前的JavaScript。Javascript:如何提取樣式中動態更改數字的值?

我在工作中遇到了這個特殊問題 - 我們有一箇中央Web界面,並且在一些特定的頁面中顯示錶格。所有表格都帶有「鎖定/解鎖表格」按鈕,以便您可以鎖定屏幕。

我有鎖定按鈕做了scrollTop的()到該按鈕的頂部位置不斷鎖定,即使用戶試圖滾動到位的觀點。

var buttonPos = button.position().top; 
jQuery(window).scrollTop(buttonPos); 
//have it keep doing this 

但有一個小問題。

<body id="body" style="padding-top: 160px;"> 

這個「padding-top」值可以通過我們的Perl腳本在Web界面後面改變。長話短說,當它改變事情變得混亂。

我想實現的解決方案是這樣的檢索,改變「填充頂」值,並抵消由這樣的事情不要搞的一團糟時,它的變化。

var offset = document.getElementById('body').style.paddingTop; //this would get that "padding-top" value 
var buttonPos = button.position().top - offset; 
jQuery(window).scrollTop(buttonPos); 

除此之外無效。 當我硬編碼偏移量的數字(例如160,0,whathaveyou),它的工作原理。但這不起作用。我做錯了什麼?

+0

你在哪裏運行該代碼?如果你不等待身體呈現,你會得到錯誤的偏移量。什麼是不正確的工作? – AMember

+0

var buttonPos = button.position()。top - offset;不工作。如果我確實說 - 160而不是做 - 抵消它適用於特定情況。但是,如果我看看這個值,那麼填充頂部值就會按照它應該改變的那樣改變。但由於某種原因,我無法獲得該值進入偏移量變量。 – Joe

回答

3

基本上正在發生的事情是,您所取的值是一個字符串,它有「PX」末。要刪除此使用這樣的:

parseInt(buttonPos, 10); 

你的整個腳本應該是這樣的:

var offset = document.getElementById('body').style.paddingTop; 
parseInt(offset, 10); 
var buttonPos = parseInt(button.position().top, 10) - offset; 
parseInt(buttonPos, 10); 
$(window).scrollTop(buttonPos); 
+0

它無法正常工作。由好奇心,我做了一個警告(偏移量)在你的parseInt行後,它仍然顯示0px,160px等。編輯:我做了另一個變量,並分配parseInt,然後嘗試減法。這工作。 – Joe

+0

我看到它現在正在工作;) – Hive7

+0

嗯,問題。如果我刷新頁面,然後嘗試點擊按鈕,它不再工作。但是,如果我觸發改變填充頂部的值的東西,那麼它的工作原理。你知道可能導致什麼嗎? – Joe

0

也許嘗試以下...

var offset = $("#body").css("padding-top"); 
0

嘗試使用offsetTop

var buttonPos = button.offsetTop; // assuming button is the HTML element 
jQuery(window).scrollTop(buttonPos);