【问题标题】:What is the best way to list elements without mysql没有mysql列出元素的最佳方法是什么
【发布时间】:2015-06-04 21:40:04
【问题描述】:
    var cities = [
    {"name":"About","link":"/","flag":"international"},
    {"name":"Buenos Aires","link":"buenos-aires","flag":"argentina"},
    {"name":"La Plata","link":"la-plata","flag":"argentina"},
    {"name":"Cologne","link":"cologne","flag":"germany"},
    {"name":"London","link":"london","flag":"unitedkingdom"},
    {"name":"Montreal","link":"montreal","flag":"canada"},
    {"name":"Melbourne","link":"melbourne","flag":"australia"}
    ];

我想为每个列出每个城市的语句做一个简单的:

    <a href="link" class="flag">name</a>

我的设置是否正确?

到目前为止,我正在使用@R3tep的方法

var cities = [
    {"name":"Melbourne","link":"melbourne","flag":"australia"},
    {"name":"Montreal","link":"montreal","flag":"canada"},
    {"name":"London","link":"london","flag":"unitedkingdom"},
    {"name":"Cologne","link":"cologne","flag":"germany"},
    {"name":"La Plata","link":"la-plata","flag":"argentina"},
    {"name":"Buenos Aires","link":"buenos-aires","flag":"argentina"},
    {"name":"About","link":"/","flag":"international"}
];
    var city = "";
    for(var i = cities.length; i--;){
    city = city + "<div class='form-body'><div class='form-group'><label class='control-label col-sm-12'><a title='Find Language Exchange Events in "+cities[i].name+"' href='"+cities[i].link+"'><div class='city_wrapper'><img class='clip sprite_cities_"+cities[i].flag+"' alt='Language Exchange in "+cities[i].name+" - Mundo Lingo' src='images/international/mundo-lingo-language-exchange-page-elements.png'/><span class='title'>"+cities[i].name+"</span></div></a></label></div></div>";
}
document.getElementById("city-demo").innerHTML = city;

效果很好,谢谢@Retep。我看到将来,一旦添加更多城市,文件就会变大,并希望将此数组以 json 格式放入,并在以后包含它,以及能够从 excel 表中导出。 var city = @.json 文件可以导入吗?

【问题讨论】:

  • 你很高兴。没有“最佳方式”,但这似乎是最直观的方式。

标签: javascript mysql arrays object


【解决方案1】:

如果您要处理大量列表,可以使用以下模板函数。

列表项:

function listItems(arr, tpl, encode) {
  var html = "";

  var entities = {
    '"': "&quot;",
    '<': "&lt;",
    '>': "&gt;",
    //'/': "&#47;",
    '&': "&amp;",
    "'": "&#39;"
  };


  for (var i = 0, len = arr.length; i < len; i++) {
    var item = arr[i];
    html += tpl.replace(/\:\w+/g, function(m){
      var value = item[m.substr(1)] || m;
      if (encode) { 
        value = value.replace(/["<>\/'&]/g,function(m){
          return entities[m] || m;
        });
      }
      return value;
    });
  }
  return html;
}

示例:

var cities = [
    {"name":"About","link":"/","flag":"international"},
    {"name":"Buenos Aires","link":"buenos-aires","flag":"argentina"},
    {"name":"La Plata","link":"la-plata","flag":"argentina"},
    {"name":"Cologne","link":"cologne","flag":"germany"},
    {"name":"London","link":"london","flag":"unitedkingdom"},
    {"name":"Montreal","link":"montreal","flag":"canada"},
    {"name":"Melbourne","link":"melbourne","flag":"australia"}
    ];

var cityLink = '<a href=":link" class=":flag">:name</a>\n';
var html = listItems(cities, cityLink, true);
console.log(html);

输出:

<a href="/" class="international">About</a>
<a href="buenos-aires" class="argentina">Buenos Aires</a>
<a href="la-plata" class="argentina">La Plata</a>
<a href="cologne" class="germany">Cologne</a>
<a href="london" class="unitedkingdom">London</a>
<a href="montreal" class="canada">Montreal</a>
<a href="melbourne" class="australia">Melbourne</a>

【讨论】:

  • “每个语句都很简单”,我在你的代码中没有看到简单的方法
  • @R3tep 这是一个视角问题。模板更容易更改。我本来可以省略 HTML 编码,但现在它是通用的,与给定的数据集无关。
  • 哇,这种方法看起来很强大。我敢肯定,今后我将拥有每个城市的更多房产。如果我将所有数据保存在电子表格中并导出为 json,我可以将 json 导入 var 城市吗?
  • @user1692959 任何作为单词字符 [a-zA-Z0-9_]+ 的键都将匹配模板中的 :keyname。您可以根据需要添加任意数量的密钥。
【解决方案2】:

这是使用开源项目http://www.jinqJs.com的方法 Fiddler

 var cities = [
    {"name":"About","link":"/","flag":"international"},
    {"name":"Buenos Aires","link":"buenos-aires","flag":"argentina"},
    {"name":"La Plata","link":"la-plata","flag":"argentina"},
    {"name":"Cologne","link":"cologne","flag":"germany"},
    {"name":"London","link":"london","flag":"unitedkingdom"},
    {"name":"Montreal","link":"montreal","flag":"canada"},
    {"name":"Melbourne","link":"melbourne","flag":"australia"}
    ];

jinqJs().from(cities).select( function(row) {
    document.body.innerHTML += '<a href="' + row.link + '">' + row.name + '</a><br>';
});

【讨论】:

  • 相当简洁的 mysql 替代品。如果我将所有信息保存在 Excel 电子表格中,并将其导出为 json 以放入文件文件夹中,我可以使用 jingJs 访问 json 吗?
  • 可以,只要可以通过http访问JSON文件
  • 谢谢你。我的真正目标是将javascript文件缩小到最小大小,压缩,压缩,作品等,所以,在你的代码示例中,我不会有一个var city。我会简单地写 jinqJs().from("site(dot)com/folder/file.json").select( function(row){document....})
  • 正确。缩小版位于 rawgit.com/fordth/jinqJs/master/jinqjs.min.js,包含所有 API 文档的 GitHub 项目位于 github.com/fordth/jinqJs
猜你喜欢
  • 2014-05-12
  • 2017-05-26
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多