我试图获取 #value_box
的值来显示 100.5
,但它一直向上舍入。有谁知道我能做些什么来让它显示小数位?
jsfiddle
<input type="text" id="the_box" style="width:100.5px" value="" />
<input type="text" id="value_box" value="" />
//returns 101
$("#value_box").val($("#the_box").css('width').replace('px', ''));
最佳答案
四舍五入的是.css('width')
。除了 getCompulatedStyle
之外,jQuery 中的 .css
还有很多内容。 Comparison .
对于 .css('width')
,jQuery 使用 offsetWidth
[source] :
val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
在 CSS 中,像素只是另一个单位,定义为 1/96 英寸。它们没有什么本质上是不可分割的。在高 DPI 显示器中,例如移动屏幕、新型笔记本电脑和打印媒体,拥有分数“像素”是有意义的。但是 offsetWidth
被定义为整数值 [CSSOM] :
readonly attribute long offsetWidth;
在这种情况下,如果您在内联样式中显式设置 width
并且想要获取它,您可以做的一件事就是使用纯 DOM 来获取它:
$("#the_box")[0].style.width.replace('px', '')
您还可以尝试使用getBoundingClientRect
[CSSOM]并通过边框和填充引入的更改进行逆向工作。此方法返回一个 DOMRect
对象,其信息表示为 float [geometry] .
$("#the_box")[0].getBoundingClientRect().width - ...
关于javascript - .val() 四舍五入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28638273/