【问题标题】:matching a key from my input field to my json object将我的输入字段中的键与我的 json 对象匹配
【发布时间】:2015-01-08 02:50:09
【问题描述】:
$ (function() {

  var heroes = {

    "Abaddon":{
      "counters": "Undying" + "Anti-Mage" + "Outworld Devourer" + "Shadow Demon" + "Techies" + "Ancient Apparition" + "Meepo" + "Riki"
    },
    "Alchemist":{
      "counters": "Riki" + "Ursa" + "Drow" + "Phantom Assassin" + "Troll Warlord" + "Bounty Hunter" + "Slark" + "Lifestealer"
    },
    "Ancient Apparition":{
      "counters": "Anti-Mage" + "Clinkz" + "Riki" + "Juggernaut" + "Zeus" + "Techies" + "Phantom Assassin" + "Spectre"
    },
    "Axe":{
      "counters": "Timbersaw" + "Venomancer" + "Silencer" + "Necrophos" + "Zeus" + "Phoenix" + "Lich" + "Ancient Apparition"
    },
    "Bane":{
      "counters": "Phantom Lancer" + "Chaos Knight" + "Meepo" + "Tidehunter" + "Sand King" + "Razor" + "Naga Siren" + "Undying"
    },
    "Batrider":{
      "counters": "Huskar" + "Viper" + "Juggernaut" + "Sniper" + "Venomancer" + "Undying" + "Weaver" + "Drow Ranger"
    },
    "Beastmaster":{
      "counters": "Axe" + "Bristleback" + "Lich" + "Timbersaw" + "Zeus" + "Meepo" + "Centaur Warrunner" + "Tidehunter"
    },
    "Bloodseeker":{
      "counters": "Wraith King" + "Techies" + "Tiny" + "Troll Warlod" + "Lifestealer" + "Dragon Knight" + "Legion Commander" + "Chaos Knight"
    },
    "Bounty Hunter":{
      "counters": "Phantom Lancer" + "Slardar" + "Meepo" + "Naga Siren" + "Bloodseeker" + "Chaos Knight" + "Huskar" + "Techies"
    },
    "Brewmaster":{
      "counters": "Undying" + "Omniknight" + "Death Prophet" + "Timbersaw" + "Weaver" + "Techies" + "Queen of Pain" + "Anti-Mage"
    },
    "Bristleback":{
      "counters": "Necrophos" + "Venomancer" + "Viper" + "Ancient Apparition" + "Razor" + "Death Prophet" + "Clockwerk" + "Omniknight"
    },


  };


  var keys = [];
  for(var k in heroes) keys.push(k);

    $("#searchBar").autocomplete({
      source: keys
    });

  $( "#searchBar" ).autocomplete({ minLength: 2 });
  var minLength = $( "#searchBar" ).autocomplete( "option", "minLength" );
  $( "#searchBar" ).autocomplete( "option", "minLength", 2 );
  $( "#searchBar" ).autocomplete({ autoFocus: true });
  $( "#searchBar" ).autocomplete({response: function( event, ui ) {} });



  $("#searchBar").bind("keypress", function(e) {
    var key = e.keyCode || e.which;
    if(key == 13) { 
      for (var i = 0; i < heroes.length; i++) {
        if (document.getElementById("searchBar").value == heroes);
        document.getElementById("placeholder").innerHTML = heroes.counters;
      };
    }
  });
});

所以基本上我想要建立的是一个反击英雄列表。我想要实现的是,当我将一个字符串放入输入字段(#searchBar)时,它将通过我的对象运行它并查看它是否匹配,它匹配它将返回值(计数器,但它不工作。

【问题讨论】:

  • 我输入了一个 e.which。所以每次我按回车键并且字符串与搜索栏中的键匹配时,它都会显示计数器。但它不起作用..
  • 为什么你的对象不必要地连接数百个字符串文字?
  • 对不起,如果我误解了这个问题,但让我解释一下这个对象。作为英雄的对象,例如“斧头”,“祸根”。这些英雄又拥有可以反击他们的英雄。因此属于“计数器”的所有字符串

标签: javascript jquery


【解决方案1】:

您没有正确地迭代对象字段。

另外我建议你使用自动完成插件的select 事件而不是按键

这是工作代码:

  $( "#searchBar" ).autocomplete({select: function( event, ui ) {
        for (var hero in heroes) {
          if (document.getElementById("searchBar").value == hero) {
            document.getElementById("placeholder").innerHTML = heroes[hero].counters;
          }
        };
  } });

http://jsfiddle.net/bo1ce55L/2/

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
相关资源
最近更新 更多