2012-10-24 23 views
3

我正在學習JavaScript。第一天!我想連接第一個和最後一個名字。這是我迄今爲止所擁有的。它工作正常,但如果我不輸入其中一個字段,它只會顯示爲null。我如何避免這種情況?我在哪裏可以將該條款放在下面的代碼中?感謝您的幫助!JavaScript新手,如何做空檢查?

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

+0

順便說一句,你在使用什麼庫?或者,「JScript」實際上不是拼寫錯誤? – Alexander

+0

任何關於像我這樣的新人的建議,從哪裏開始。我已經被推入這個世界,並且我正在網上閱讀並試圖儘可能最好地理解使用JavaScript。我需要一個初學者指南。有什麼建議麼?我目前正在嘗試在Microsoft Dynamics CRM 2011中使用它。 – Lauren

回答

3

您可以利用JavaScript中的all variables are truthy or falsy這一事實。換句話說,每個變量都可以被強制(轉換)爲truefalse

nullfalsy,並與內容字符串truthy。這意味着:

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

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

if (b) { 
    // runs 
} 

您可以使用其它類型的表達式太像一個ternary expressionlogical OR operator

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

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

在這種情況下,邏輯OR是我們最有趣的選擇。當您使用操作,會發生以下情況:

  1. 如果左側評估truthy,返回值。
  2. 否則,返回右側評估的值。

在上述例子中,是anull,所以它是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的調用來從結果中刪除多餘的空格。

+0

謝謝你的偉大解釋!這很有道理! – Lauren

1

您可以檢查,如果事情是空喜歡:

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

}

所以像

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

這將設置的firstName爲空字符串

+0

嗨達倫,我添加了你的建議,正好在我的兩個var語句下面。我添加了這個:if(varFirstName == null){varFirstname =「」;} if(varLastName == null){varLastname =「」;} – Lauren

+0

對不起,我輸入太快。我輸入了名字Lauren,然後它仍然說「null」,所以在我的全名框裏寫着Lauren Null ......我做錯了什麼? – Lauren

+0

它像大寫字母N那樣返回Null嗎?如果是這樣,那麼它看起來像一個字符串「空」正在返回作爲一個空對象拼寫全部小寫。改爲: if(varLastName == null || varLastName ==「Null」){varLastName =「」;} - 意思是'或' – Darren

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); 
}; 
+0

傑夫!非常感謝你的幫助,我真的很喜歡它。這很好!任何關於像我這樣的新人的建議,從哪裏開始。我已經被推入這個世界,並且正在網上閱讀並盡力理解我的意圖。我需要一個初學者指南。有什麼建議麼? – Lauren

+0

對不起@Lauren我不太瞭解JScript,只是碰巧我知道Xrm.Page.getAttribute將提供對Xrm.Page.data.entity.attributes.get方法的直接訪問。 –

+0

「.ToLower()」位真的有必要嗎?如果它不是'null',它是否可以在'.ToLower()'之後變爲'null'? (我對xrm一無所知,但我知道js ...) – bfavaretto