2016-05-17 101 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; 
}