【问题标题】:Is variable set/defined issue?变量设置/定义问题?
【发布时间】:2012-04-11 01:42:59
【问题描述】:

我正在使用一个论坛软件,您可以在其中使用以下命令拉出头像链接:{$mybb->user['avatar']}

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

目前 HTML 是这样设置的:

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

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

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

这是我正在使用的 javascript:

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

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

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

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

非常感谢, 杰克·克拉克

【问题讨论】:

  • 检查类型你应该做typeof(myavatar) === "undefined"
  • 您可能还想在 '{$mybb->user['avatar']}' 周围加上引号,我假设 php 变量正在输出一个字符串。

标签: javascript jquery html forum mybb


【解决方案1】:

在您的if 条件下,语法有问题。单等号就是赋值。

至少改变这个

if(typeof(myavatar) = null)   

if (typeof myavatar == 'undefined')

【讨论】:

  • 欢迎来到 Stack Overflow。 4 个空格缩进格式化代码,语法高亮。或突出显示并单击工具栏中的{} 按钮
  • 我把它改成了你说的,但它似乎不起作用。这就是源代码显示的内容: var myavatar = ; if(typeof(myavatar) == 'undefined'){ jQuery('#avatar').addClass('defaultavatar'); }
  • if('{$mybb->user['avatar']}' == ''){ jQuery('#avatar').addClass('defaultavatar'); }
  • 你知道网站应用使用的是哪个php模板引擎吗?和我之前用的模板引擎Smarty很像,但绝对不是Smarty语法。
  • 你知道网站应用使用的是哪个php模板引擎吗?它与我之前使用的模板引擎 Smarty 非常相似,但绝对不是 Smarty 语法。您需要了解正确的模板引擎才能获得正确的语法。或者,您可以尝试使用 alert() 检查 myavatar 的值。它应该检查 php 语法是否将正确的值传递给 javascript 变量。那么你就可以知道这个 javascript 中会有什么样的 php 'null' 值了
【解决方案2】:

undefined 在 javascript 中有两种含义。我不确定它们的确切名称是什么,在我的示例中,我将它们称为 undefined 和 REALLY 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
}

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

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

你可以看到一个相关的 StackOverflow 问题here

【讨论】:

    【解决方案3】:

    根据{$mybb-&gt;user['avatar'] 返回的内容,这样做可能就足够了:

    if (myavatar) {
      // do stuff
    }  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多