【问题标题】:Phonegap - Javascript, making a variable out of a objectPhonegap - Javascript,从对象中生成变量
【发布时间】:2012-11-10 10:14:55
【问题描述】:

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

我能做什么?

谢谢。

【问题讨论】:

    标签: javascript variables object cordova


    【解决方案1】:

    如果我没有正确理解您的问题,那么您可以使用括号表示法而不是点表示法来使用字符串作为属性名称:

    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"]。在后一种情况下,字符串不必是字符串文字,它可以是任何表达式的结果。所以所有这些都输出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"
    

    【讨论】:

      【解决方案2】:

      这将为当前行中的所有字段附加值

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-01
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        • 2011-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多