javascript的变量范围问题

时间:2014-01-23 04:26:59

标签: javascript jquery html

在我的应用程序中,最初这些代码有效:

var htm = "<div> My content </div>";   
$("#divprint").html(htm);
window.setTimeout('window.print()', 4000);

但是,当我尝试将其包装在if语句中时,它将不会打印:

var canprint= $.cookie("actionprint");  
alert("I am outside " + canprint);
if(canprint == null){
    alert("I am inside");
    var htm = "<div> My content </div>";
    window.setTimeout('window.print()', 4000);
}

当我运行此代码时,我只收到第一个警告:“我在外面无效”

由于javascript的范围是功能级别,我想知道,为什么会失败?

3 个答案:

答案 0 :(得分:1)

你能尝试if语句吗,

if (!canprint)

答案 1 :(得分:1)

行。奇怪的是:

首先,我试图打印出来:

  console.log(typeof canprint, canprint);

令人惊讶的是,结果是:

string null

所以,我改为if条件:

if(canprint == "null")

然后它可以进入if。

虽然这很有效,但有谁能解释发生了什么? 这真的是出于我的探险。

答案 2 :(得分:0)

从setTimeout函数中删除引号和括号

window.setTimeout(window.print, 4000);

并使用以下内容:jQuery check if Cookie exists, if not create it

var CookieSet = $.cookie('cookietitle', 'yourvalue');

     if (CookieSet == null) {
          // Do Nothing
     }
     if (jQuery.cookie('cookietitle')) {
          // Reactions
     }