【发布时间】:2012-10-16 19:23:02
【问题描述】:
我遇到过这个问题: 根据我想创建条形图的数字。有趣的是,它在 IE8 的怪癖模式下运行良好,但在其他任何地方都失败了。我真的不能说错误在哪里,我希望这里有人可以帮助我。我正在使用 jQuery,但使用 getElementById() 和 element.style.width = Somevalue(即没有 jQuery)也不起作用:(
[编辑:删除完整示例链接;馅饼过期了。]
基本上:
<input onChange="calculateField(1)" ...>
function calculateField(fieldname){
value = $("#input_" + fieldname).val();
fancyMagic();
value = 6 * value; // for testing
$("#subtotal_" + fieldname).html(value);
updateDiagram();
}
function updateDiagram(){
// gather required into, maxwidth, maxval, etc...
// fetch 'normal' bar
var target = $("#animatebar_1");
var width = maxwidth * (value / maxval);
// set width to proper width
target.width(width);
// like for avg bar
var avgtarget = $("#avgbar_1");
var avgwidth = maxwidth * (averagevalue / maxval);
avgtarget.width(avgwidth);
}
我在各种设置和 Opera 中尝试了所有 FF、IE8,但它根本不起作用。栏的宽度在之后立即设置为零。有趣的是,IE8 quirks 模式有效。
我很确定这只是我愚蠢,但我会很感激这方面的帮助。我也尝试使用 .css() 来更改大小,但也没有用。
非常感谢您。
【问题讨论】:
-
console.log 你所有的数学方程,以确保它们都被计算为实际数值(而不是 NaN 或字符串)。 IE 中对奇数数学的一些处理存在细微差异(例如除以零)。
-
我使用 IE 开发工具栏和 firebug AND Opera 的蜻蜓来单步执行代码,并且我在所有变量中的值总是正确的(或者至少看起来正确;对于整数值和简单的分数,它可以工作)。
-
顺便说一下,开发工具和蜻蜓报告宽度为零,firbug 目前声称 40px。更改宽度之前/之后的 console.log 为我提供了合理的 item.width() 值。可见性报告为“可见”。 (通过 Firebug。我还没有找到如何从 jQuery 中读取 CSS。)
标签: javascript jquery cross-browser width quirks-mode