变量集/定义问题?

时间:2012-04-11 01:42:59

标签: javascript jquery html forum mybb

我正在使用论坛软件,您可以使用以下方式提取头像链接:{$ mybb-> user ['avatar']}

如果未设置头像,则不返回任何内容。如果没有设置头像,我想显示图像。

目前,HTML的设置如下:

    <div id="avatar"><div style="background: url({$mybb->user['avatar']}) center center no-repeat;"></div></div>

外部div是空的并且在后台。这个也是我正在添加一个类(.defaultavatar),以便显示默认的头像。

内部div是显示头像的人。如果没有上传/选择头像,则它将显示为空白。

这是我正在使用的javascript:

    var myavatar = {$mybb->user['avatar']};

    if(typeof(myavatar) = null){ 
        jQuery('#avatar').addClass('defaultavatar');
    }

如果头像网址为空,我希望将类defaultavatar添加到第一个div。

我该怎么做(让它工作)?

非常感谢, 杰克克拉克

3 个答案:

答案 0 :(得分:2)

if条件下,语法有问题。单一等于分配。

至少改变这个

if(typeof(myavatar) = null)   

if (typeof myavatar == 'undefined')

答案 1 :(得分:1)

根据{$mybb->user['avatar']返回的内容,执行以下操作可能就足够了:

if (myavatar) {
  // do stuff
}  

答案 2 :(得分:1)

javascript中undefined有两种含义。我不确定他们的名字是什么,对于我的例子,我将它们称为未定义且真的未定义。

当您尝试从已声明但尚未初始化的内容中获取值时,会获得常规undefined。换句话说,解释器知道你正在谈论的事情,但那件事还没有价值。

您可以使用简单的if语句将变量强制转换为布尔值,以检查它是否为undefined这种类型。请注意,此演员表也会将空字符串''和数字0投放到false。如果您还需要考虑空字符串和数字0,请改用条件myDeclaredVariable === undefined

if (myDeclaredVariable) {
    // myDeclaredVariable is initialized with a "truthy" value
} else {
    // myDeclaredVariable is either uninitialized or has a "falsey" value
}

真正undefined是您在尝试访问随机变量时所获得的,而不会声明它。解释器不知道你在说什么,如果你试图用它做任何事情,它将抛出一个javascript异常。要处理这种情况,您需要使用typeof operator

if (typeof myPossiblyDeclaredVariable !== 'undefined') {
    // myPossiblyDeclaredVariable has been declared
} else {
    // myPossiblyDeclaredVariable has not been declared yet
}

您可以看到相关的StackOverflow问题here