2012-08-15 139 views
0

這應該很簡單,但... 我使用JavaScript從MS Access數據庫填充一些選擇框。所以...我循環記錄並檢索名字。其中一些是有效的,有些是空的,有些是空的(無論什麼原因)。我想捕捉空值和空值,以便它們不會出現在選擇選項中。這是我有什麼:從MS Access的空陷阱的陷阱

var SQL = "SELECT DISTINCT design_lead FROM projects"; 
rs.Open(SQL, cn); 
    if(!rs.bof) { 
     rs.MoveFirst(); 
    } 
var i=0; 
while(!rs.eof) { 
    desLead = rs("design_lead"); 
    if(desLead==null || desLead==undefined || desLead=='') { 
     i=i+1; 
     rs.MoveNext(); 
    } 
    else { 
     $("#leadName").append("<option>"+desLead+"</option>") 
     i=i+1; 
     rs.MoveNext(); 
    } 
} 
rs.Close(); 

問題是null總是出現在選項列表中。我搜索了幾天,但沒有找到任何有用的東西......並且我嘗試了許多不同的陷阱(typeof等),但沒有任何作用。

+0

確定的值是'null'而不是'「空」'? – ColBeseder 2012-08-15 12:11:43

回答

1

怎麼樣只是沒有在第一時間返回空值:

var SQL = "SELECT DISTINCT design_lead FROM projects WHERE design_lead IS NOT NULL"; 

此外,您還可以收縮while循環下來一點,因爲有一個在如果和其他情況下,只有一條線路的不同:

while(!rs.eof) { 
    desLead = rs("design_lead"); 
    if(desLead) { 
     $("#leadName").append("<option>"+desLead+"</option>") 
    } 
    i=i+1; 
    rs.MoveNext(); 
} 

通過說if(desLead)正在測試,如果desLead是 「truthy」,並指出nullundefined和空字符串都是 「falsy」。

如果實際字符串"null"可能因爲某些原因被退回,然後就去做:

if(desLead && desLead != "null")