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

3 回答 3

3

您可以利用 JavaScript 中所有变量都是的事实。换句话说,每个变量都可以被强制(转换)为trueor false

null的,有内容的字符串是真的。这意味着:

var a = null;
var b = 'hello';

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

if (b) {
    // runs
}

您也可以使用其他类型的表达式,例如三元表达式逻辑 OR 运算符

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

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

在这种情况下,逻辑 OR 是我们最有趣的选择。使用运算符时,会发生以下情况:

  1. 如果左侧计算出truthy,则返回该值。
  2. 否则,返回右侧求值的值。

在上面的例子中,ais null,所以它是falsy。表达式返回右侧,即 的值b。所以我们可以通过编写来利用这种行为varFirstName || '',这将返回名字(如果有的话),或者如果它为空,则右侧给我们一个空字符串。

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从结果中删除多余的空格。

于 2012-10-24T20:04:35.133 回答
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);
};
于 2012-10-24T19:55:29.577 回答
1

您可以检查某些内容是否为空,例如:

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

}

所以像

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

这会将 firstName 设置为空字符串

于 2012-10-24T19:45:28.640 回答