JavaScript新手,如何进行空值检查?

3

我正在学习JavaScript,第一天!我想把名字和姓氏连接起来。这是我的代码,它可以正常运行,但如果我不输入其中一个字段,它就会显示为null。我该怎么避免这种情况?在下面的代码中应该放置哪个子句?非常感谢您提前的帮助!

function ShowFullName()
{
    var varFirstName = Xrm.Page.getAttribute("lauren_firstname").getValue();
    var varLastName = Xrm.Page.getAttribute("lauren_lastname").getValue();
    Xrm.Page.getAttribute("lauren_name").setValue(varFirstName + " "  + varLastName);
};

4
学习JScript(或任何其他东西)的一部分将是学习使用文档。当然,欢迎在这里提问,但请注意,您应该展示出进行了研究的努力。 - harpo
顺便问一下,你在用哪个库?或者,“JScript”实际上不是拼写错误吗? - Alexander
有没有针对像我这样的新手的建议,从哪里开始学习编程呢?我被推到了这个世界中,正在网上阅读并尽力理解如何使用JavaScript。我需要一个初学者指南。有什么建议吗?我目前正在尝试在Microsoft Dynamics CRM 2011中使用它。 - Lauren
@Lauren:在谷歌上搜索“道格拉斯·克罗克福德”,并观看他在YouTube上的讲座。 - slebetman
3个回答

3
你可以利用 JavaScript 中的一个特点,即所有变量都是真值或假值。换句话说,每个变量都可以强制转换为truefalsenull 是假值,有内容的字符串是真值。这意味着:
var a = null;
var b = 'hello';

if (a) {
    // does not run
} else {
    // runs
}

if (b) {
    // runs
}

你也可以使用其他类型的表达式,比如 三元表达式 或者 逻辑或运算符

alert(a ? 'yes' : 'no'); // => no
alert(b ? 'yes' : 'no'); // => yes

alert(a || b); // => hello

在这种情况下,逻辑或是我们最有趣的选择。当您使用该运算符时,以下内容会发生:
  1. 如果左侧求值为“真”,则返回该值。
  2. 否则,返回右侧求值的值。
在上面的示例中,anull,因此它是“假”。表达式返回右侧的值,即 b 的值。因此,我们可以利用这种行为通过编写 varFirstName || '' 来实现,这将返回第一个名称(如果有),或者如果它为 null,则右侧给出空字符串。
function ShowFullName() {
    var varFirstName = Xrm.Page.getAttribute("lauren_firstname").getValue();
    var varLastName = Xrm.Page.getAttribute("lauren_lastname").getValue();

    Xrm.Page.getAttribute("lauren_name").setValue(((varFirstName || '') + " " + (varLastName || '')).trim());
}

我在结果中添加了一个trim调用,以删除多余的空格。

1

试试这个:

function ShowFullName()
    var varFirstName = Xrm.Page.getAttribute("lauren_firstname").getValue();
    var varLastName = Xrm.Page.getAttribute("lauren_lastname").getValue();

    if(varFirstName == null || varFirstName.ToLower() == "null") { 
        varFirstName = "";
    }

    if(varLastName == null || varLastName.ToLower() == "null") { 
        varLastName = "";
    }

    Xrm.Page.getAttribute("lauren_name").setValue(varFirstName + " "  + varLastName);
};

Jeff!非常感谢你的帮助,我真的很感激。这个方法很有效!对于像我这样的新手,你有什么建议可以开始学习吗?我被推到了这个世界中,正在在线阅读并尽力理解。我需要一个初学者指南。有什么建议吗? - Lauren
抱歉 @Lauren ,我不太了解 JScript,只是碰巧知道 Xrm.Page.getAttribute 将直接提供对 Xrm.Page.data.entity.attributes.get 方法的访问。 - Jeff Robert Dagala
.ToLower() 位真的必要吗?如果它不是 null,在 .ToLower() 之后会变成 null 吗?(我对 xrm 一无所知,但我确实懂 js...) - bfavaretto
是的,这是必要的,因为它会返回字符串“Null”。为了更安全,我添加了“.ToLower()”。 - Jeff Robert Dagala

1

您可以像这样检查某个值是否为空:

if (obj == null) { 
  // do this 

}

就像这样的东西

if (varFirstName == null) { varFirstname = "";}

这将把firstName设置为空字符串


嗨达伦,我在我的两个变量声明下面添加了你建议的内容。我添加了这个:if (varFirstName == null) { varFirstname = "";} if (varLastName == null) { varLastname = "";} - Lauren
抱歉,我输入得太快了。我输入了名字“Lauren”,但仍然显示“null”,所以我的全名框中显示为“Lauren Null”......我做错了什么? - Lauren
它返回的是大写字母N的Null吗?如果是这样,那么看起来返回的是一个字符串"Null",因为null对象拼写全小写。请改用以下方式: if (varLastName == null || varLastName == "Null") { varLastName = "";} - || 表示“或” - Darren Wainwright
你也可以尝试检查未定义的变量。使用:if (varLastName 未定义){varLastName = "";} - Darren Wainwright
Darren,感谢你的帮助。我采纳了Jeff上面的建议,它很好地解决了我的问题,现在我看到你也提出了同样的建议。非常感谢你的帮助,我真的很感激。 - Lauren
不用担心,很高兴现在一切都正常了 :) 我可以建议你将任何你想要的人标记为答案吗?这会提高你的答案率,人们将更愿意在未来帮助你。对于任何你认为有帮助的答案,也请点击上箭头 :) - Darren Wainwright

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接