2013-11-28 35 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);