Phonegap - Javascript,从对象中制作变量

时间:2012-11-10 10:14:56

标签: javascript variables object cordova

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

我该怎么办?

感谢。

2 个答案:

答案 0 :(得分: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中,您有两个用于访问对象属性的选项:您可以使用带有点的文字属性名称,例如foo.bar;或者您可以使用带有字符串的括号表示法,例如foo["bar"]。在后一种情况下,字符串不必是字符串文字,它可以是任何表达式的结果。因此,所有这些都输出bar的{​​{1}}属性:

foo

答案 1 :(得分: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);

}