javascript计算有时不会发生

时间:2012-01-12 00:15:11

标签: javascript jquery css

在以下代码段中:

var scr_h = $(document).height();
var scr_w = $(document).width();
var logo = {                                                             
    width   :   (scr_w*.25),                                              
    img     :   document.createElement('img'),                           
    src     :   'images/static/mk_vc.png'                                
};  
$(logo.img).attr('src', logo.src);                                       
$('#logo').append(logo.img);                                             
$('#logo').css({                                                         
    'margin-top'    :   scr_h*.15+'px',                                       
    'width'         :   logo.width+'px',
    'left'          :   (scr_w/2)-(logo.width/2)+'px' //this doesn't always work...
}); 
alert($('#logo').css('left'));        

有时警报会以“自动”而不是正确的号码返回。如果刷新页面通常会发生这种情况(尽管ctrl + refresh通常可以解决问题)。我尝试通过php渲染页面并将?randomnumber=$randomnumber参数附加到JavaScript调用,但它没有帮助,这意味着它不是某种缓存问题。

它似乎也发生在所有浏览器中。我的客户有一台Mac,并尝试使用Chrome和Safari,我使用Linux并在Chrome和Firefox中尝试过。

有什么想法吗?其余的JavaScript函数都很好,无论该特定行是否正确呈现。 margin-topwidth css也始终有效。它似乎只是提出问题的left

我尝试更改顺序以首先渲染“左”,但这也没有用,尽管其他两个属性仍然很好。

完整的脚本可以在http://meenakhalili.turnleftllc.com/scripts/js/dev/mk.js看到,网站位于meenakhalili.turnleftllc.com。尝试刷新几次。你会看到问题。

2 个答案:

答案 0 :(得分:0)

我想这取决于代码执行时所呈现的页面,如果代码包含在$(function(){...})或类似代码中,这是不确定的。

您可以尝试测量窗口而不是文档:

var scr_h = $(window).height();
var scr_w = $(window).width();

答案 1 :(得分:0)

Chchrist昨晚在评论中回答了这个问题。将映像设置为在映像的onload事件之后发生问题。

我现在正在发布这个帖子,但我很乐意在它到期的地方给予信任!