2012-11-10 20 views
-1

使用PhoneGap的其SQL函數,我讓我的查詢返回的的PhoneGap - JavaScript,從而使變了對象

results.rows.item(i).Title 

形式,其中results.rows.item(i)爲每個對象和.Title將指定要選擇的字段。

這只是幾個領域中的一個,所以我沒有多次寫出一條大規模的線,而是想將它聲明爲一個變量。

var details = "results.rows.item(i).Title + \' \' " + 
     "+ results.rows.item(i).Street + ' ' " + 
     "+ results.rows.item(i).PostalCode + ' ' " + 
     "+ results.rows.item(i).Contact + ' ' " + 
     "+ results.rows.item(i).ContactEmail + ' ' " + 
     "+ results.rows.item(i).ContactPhone + ' ' " + 
     "+ results.rows.item(i).OperatingHours + ' ' " + 
     "+ results.rows.item(i).Operator + '</p></div>'" 

。當然,隨之而來的問題是,它的一個字符串,當我嘗試以下行

$("#locations").append('<div data-role="collapsible"><h3>' + results.rows.item(i).Title + '</h3><p>' + details); 

我能做些什麼用?

謝謝。

回答

2

如果我正確undestanding你的問題,那麼您可以通過使用括號符號,而不是點式的字符串作爲屬性名稱:

var details = []; 
var item = results.rows.item(i); 
["Title", "Street", "PostalCode", "Contact", "ContactEmail", "ContactPhone", "OperatingHours", "Operator"].forEach(function(field) { 
    details[details.length] = item[field]; 
}); 
details = details.join(' '); 

(需要注意的是,使用ES5的forEach如果你未必。在啓用ES5的環境中運行時,可以使用填充[或重寫上述內容以使用for循環]。)

基本上,在JavaScript中,您有兩種訪問對象屬性的選項:您可以使用帶點的文字屬性名稱,例如foo.bar;或者你可以用一個字符串使用括號表示法,例如foo["bar"]。在後一種情況下,字符串不一定是字符串文字,它可以是任何表達式的結果。因此,所有這些輸出的foobar屬性:

var foo = {bar: "baz"}; 
console.log(foo.bar);  // "baz" 
console.log(foo["bar"]);  // "baz" 
var s = "bar"; 
console.log(foo[s]);   // "baz" 
var b = "b", a = "a", r = "r"; 
console.log(foo[b + a + r]); // "baz" 
+0

酷在追加對所有字段的值。謝謝,絕對有一些更乾淨的代碼。 – Pat

1

這將當前行

var rowData = results.rows.item(i); 
var fieldName,fieldValue; 

for(var fieldName in rowData) { 
    fieldValue = rowData[fieldName]; 

    $("#locations").append('<div data-role="collapsible"><h3>' + fieldValue + '</h3><p>' + details); 

}