【问题标题】:jQuery - parseFloat returns different values when usedjQuery - parseFloat 在使用时返回不同的值
【发布时间】:2013-12-23 17:22:31
【问题描述】:

在这段代码中:

$("div#info_holder").css("marginLeft", "100%");
alert(parseFloat($("#info_holder").css("marginLeft")));
alert(parseFloat(document.getElementById("info_holder").style.marginLeft));

第一个警报返回 1037.78,第二个警报返回 100

这是为什么?!

【问题讨论】:

    标签: jquery parsing alert parsefloat


    【解决方案1】:

    这是因为 jQuery 版本将边距返回为像素,而原生 JS 将值返回为百分比。看看这个 fiddle,它在运行 parseFloat 之前提供了值。

    $("div#info_holder").css("marginLeft", "100%");
    
    console.log($("#info_holder").css("marginLeft"));
    console.log(document.getElementById("info_holder").style.marginLeft);
    

    http://jsfiddle.net/ryanbrill/wtABu/

    【讨论】:

    • 正确。更进一步,我假设 jQuery 正在查看 div 的盒子模型并在幕后进行一些计算,因此为什么要获得 1037.78 的像素值。使用本机 JavaScript 时,我假设它正在提取设置的值,100%
    • 您可以通过取出 parseFloat 并简单地显示警报值来测试这一点,但这是我的建议。
    • 我明白了!我想我只会使用 getElementById。多谢! :)
    【解决方案2】:

    $("#info_holder").css("marginLeft") 返回像素,document.getElementById("info_holder").style.marginLeft 以百分比读取。

    【讨论】:

    • 不,这看起来很复杂。 jQuery 是为了让事情变得轻松,而不是让事情变得更糟。我将只使用 getElementById。非常感谢,不过! :)
    • @user3130281 确切地说,jQuery 是 javascript 的包装器,因此将 javascript 与 jQuery 一起使用不必担心或不好的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多