【问题标题】:Passing string element to data key将字符串元素传递给数据键
【发布时间】:2014-12-01 19:16:44
【问题描述】:

我有一个检查 div 的函数,如果它存在,它会用来自 JSON 数组的匹配数据填充它。 Div 和数据具有相同的 id 和键,所以我希望能够将它们放在一个字符串中以获得更优雅的解决方案。但是,尝试将字符串元素应用于数据键的最后一个元素似乎不起作用。我得到“无法读取未定义的属性 '0'”

原码:

$.getJSON('myDataUrl', function(data) {
if ($("#title").length){document.getElementById("title").innerHTML=data.title};
if ($("#noun").length){document.getElementById("noun").innerHTML=data.noun};
if ($("#_id").length){document.getElementById("_id").innerHTML=data._id};
if ($("#owner_id").length){document.getElementById("owner_id").innerHTML=data.owner_id};
}); 

我想要达到的更“优雅”的解决方案:

$.getJSON('myDataUrl', function(data) {
var contentString = "name,noun,_id,owner_id";
var splitContent;
splitContent = contentString.split(",");
for(i = 0; i < splitContent.length; i++)
           {if ($("#" + splitContent[i]).length){
               document.getElementById(splitContent[i]).innerHTML=data.splitContent[i];
               };
               }

【问题讨论】:

  • 如果使用jQuery,你不需要检查长度
  • 我通过这个接受的答案来检查是否存在 div stackoverflow.com/questions/31044/…
  • 您不需要使用 jQuery 检查元素是否存在,因为仍然可以处理空的 jQuery 对象而不会引发错误

标签: javascript jquery string for-loop split


【解决方案1】:

看起来应该够了:

$.getJSON('myDataUrl', function (data) {
    for (var k in data) {
        $("#" + k).html(data[k]);
    }
});

【讨论】:

  • 像魅力一样工作。谢谢。并让我的“优雅”想法看起来像我穿高跟鞋的奶奶。一旦时间限制到期,我将标记为已回答
【解决方案2】:

问题是data.splitContent[i]。那应该是data[splitContent[i]]。也就是说,您想使用当前键(例如name)作为数据对象中的键。

【讨论】:

    【解决方案3】:

    你也可以使用 jQuery 的 Map。

      $.map(data, function(value, key) {
        $("#" + key).html(value);
      });
    

    这是工作的 JSBin:http://jsbin.com/tocege/2/edit?html,js,output

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2018-10-30
      • 1970-01-01
      • 1970-01-01
      • 2020-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多