-1

使用 Phonegap 及其 SQL 函数,我的查询返回形式为

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

我能做些什么?

谢谢。

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 的环境中运行,则可以使用 shim [或重写上述内容以使用for循环]。)

基本上,在 JavaScript 中,您有两种访问对象属性的选项: 您可以使用带点的文字属性名称,例如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 回答