2016-05-17 96 views
1

這裏是我的javascript函數不能夠比較一個JavaScript變量

function onload(){ 
    var calMaxAmtStatus='<%=request.getAttribute("calMaxAmountStatus") %>'; 
    alert(calMaxAmtStatus);   
    if (typeof(calMaxAmtStatus) != 'undefined' && calMaxAmtStatus != null){ 
    document.forms[0].status.value=calMaxAmtStatus; 
    } 

我在某些情況下 我想要的值設置爲一個字段時,它是沒有得到

request.getAttribute("calMaxAmountStatus") 

值空或空字符串。

這裏就是我所做的到現在 我已經印刷calMaxAmtStatus它給了我的字符串作爲結果 但是當我試圖把它用比較不爲空喜歡這裏calMaxAmtStatus !=null它似乎不工作。

我得到空印在該領域的每次

我的問題是我不希望打印的任何東西,如果calMaxAmtStatus變量沒有任何價值。

+0

我認爲這是因爲你應該寫NULL而不是null –

+0

@ShrikanthBuds,'calMaxAmtStatus'總是有一個字符串值,而不是一個原始的null。由於單引號。 –

回答

1

此代碼將永不執行:typeof(calMaxAmtStatus) != 'undefined' && calMaxAmtStatus != null。因爲在任何情況下你都會有一個字符串值。

在此代碼中var calMaxAmtStatus='<%=request.getAttribute("calMaxAmountStatus") %>'calMaxAmtStatus變量始終有一個字符串值。即使request.getAttribute("calMaxAmountStatus")將在java中返回null,在JavaScript中它將轉換爲"null"值。引用詞「null」。

試試這個:

function onload(){ 

    var calMaxAmtStatus='<%=request.getAttribute("calMaxAmountStatus") %>'; 

    alert(calMaxAmtStatus); 

    if (calMaxAmtStatus && calMaxAmtStatus != 'null') { 

     document.forms[0].status.value=calMaxAmtStatus; 
    } 
} 

讓我們分析一下:

if (calMaxAmtStatus && calMaxAmtStatus != 'null') { 

    /* 
     If calMaxAmtStatus is not an empty string and 
     calMaxAmtStatus is not equal to 'null' string 
     value (NOT to null primitive type) run your code 
    */ 
} 
0

在這裏,我認爲這個問題是在你的宣言

'<%= request.getAttribute引號(」 calMaxAmountStatus「)%>'

這將導致null變量被指定爲'null',這意味着您的變量永遠不會真正未定義添加到您是否檢查'null'的字符串值。

如果(typeof運算(calMaxAmtStatus)= '未定義' & & calMaxAmtStatus = NULL & & calMaxAmtStatus = '空'!!!)

0

讓測試是在服務器端:

function onload(){ 
    var calMaxAmtStatus= <%= request.getAttribute("calMaxAmountStatus")? "'"+request.getAttribute("calMaxAmountStatus").toString()+"'" : "null" %>; 
    alert(calMaxAmtStatus);   
    if (calMaxAmtStatus){ 
    document.forms[0].status.value=calMaxAmtStatus; 
}