Javascript 如果语句的计算结果为true,则不为true

Javascript 如果语句的计算结果为true,则不为true,javascript,jquery,Javascript,Jquery,我假设这是一个很小的错误,但我不能解决它 我有一个简单的脚本,可以在em中找到页面的宽度,然后是if语句,为了回答这个问题,它只包含一个控制台。log: $(document).ready(function() { var windowWidth = ''; function getWidth() { windowWidth = $(window).width() / parseFloat($("body").css("font-size")); } window.ad

我假设这是一个很小的错误,但我不能解决它

我有一个简单的脚本,可以在
em
中找到页面的宽度,然后是
if
语句,为了回答这个问题,它只包含一个
控制台。log

$(document).ready(function() { 
  var windowWidth = '';
  function getWidth() {
    windowWidth = $(window).width() / parseFloat($("body").css("font-size"));
  }
  window.addEventListener("load", getWidth);
  if (windowWidth < 40) {
    console.log("whaaaat");
  }
});
$(文档).ready(函数(){
var windowWidth='';
函数getWidth(){
windowWidth=$(window.width()/parseFloat($(“body”).css(“font size”));
}
window.addEventListener(“加载”,getWidth);
如果(窗宽<40){
控制台日志(“whaaat”);
}
});

我的
body
标记的
字体大小为
16px
。这不应该评估为真,但确实如此。在控制台中调用
windowWidth
变量时,返回值大于40。我疯了吗?

您的代码有几个问题

  • 首先指出您正试图将空白值与
    40
    进行比较,因为在比较
    windowWidth
    变量时,尚未填充该变量
  • 第二个问题是在
    $(document).ready
    语句中使用
    load
    事件,这是不必要的<代码>$(文档).ready
在页面加载后被触发 这里有一个固定版本:

$(文档).ready(函数(){
var windowWidth=$(window.width()/parseFloat($(“body”).css(“font size”));
console.log(窗口宽度);
如果(窗宽<40)
控制台日志(“whaaat”);
});

那么,您真的希望在加载后对if进行评估吗?运行该if时,windowWidth等于
“”
。所以if是
if(“<40”){
if语句需要在getWidth中。在
if
condition.epascarello之后,您错过了右括号。据我所知,在document
ready
页面上,页面已经加载,因此如果加载已经发生,为
load
事件添加处理程序是没有意义的。@epascarello当然,谢谢为了清楚起见。我不需要动态地使用此功能,所以我只是删除了
eventListener
,并在声明后调用了该函数。它现在可以工作了。@derloopkat是的,这是最好的冗余。哎呀。谢谢,我已经把它整理好了。
}
只是一个复制错误,但我理解并理解其他两点。@Tom Yep,从我的答案中删除了这一点。