-1

Phonegap とその SQL 関数を使用すると、次の形式でクエリが返されます。

results.rows.item(i).Title

ここで、results.rows.item(i) はオブジェクトごとで、.Title は選択するフィールドを指定します。

これは複数のフィールドのうちの 1 つにすぎないため、大量の行を何度も書き出す代わりに、変数として宣言したいと考えました。

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);

私に何ができる?

ありがとう。

4

2 に答える 2

2

あなたの質問を正しく理解していれば、ドット表記ではなく括弧付き表記を使用して、文字列をプロパティ名として使用できます。

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 では、オブジェクトのプロパティにアクセスするための 2 つのオプションがありますfoo.bar。または、文字列で括弧付き表記を使用できますfoo["bar"]。後者の場合、文字列は文字列リテラルである必要はなく、任意の式の結果にすることができます。したがって、これらはすべて次のbarプロパティを出力しますfoo

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"
于 2012-11-10T10:18:54.820 に答える
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);

}
于 2012-11-10T10:37:15.340 に答える