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ではすべての変数が真実またはであるという事実を利用できます。言い換えると、すべての変数をtrueまたはに強制変換(変換)することができます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. 左側が真であると評価した場合は、その値を返します。
  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結果から余分なスペースを削除するための呼び出しを追加しました。

于 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

次のように、何かがnullであるかどうかを確認できます。

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

}

だから何かのような

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

これにより、firstNameが空の文字列に設定されます

于 2012-10-24T19:45:28.640 に答える