0

タグ付けされた名前を入力で変更しようとしていますが、Enterキーを押すと再実行されますfeed.run();

var num = 60;
var inputTextValue;




window.onkeyup = keyup;
    function keyup(e) {
      inputTextValue = e.target.value;
      $('#searchValue').text(inputTextValue);

      if (e.keyCode == 13) {
          inputTextValue = e.target.value;
          feed.run();

      }
    }

    var feed = new Instafeed({
   get: 'tagged',
   tagName: inputTextValue,
    userId: 3614616,
    accessToken: '3614616.467ede5.abc0b5a861d34365a5c8dd8db0163c4b',
    limit:"100",
    resolution : "low_resolution",
    after: function () {
    var images = $("#instafeed").find('a');
    $.each(images, function(index, image) {
      var delay = (index * 75) + 'ms';
      $(image).css('-webkit-animation-delay', delay);
      $(image).css('-moz-animation-delay', delay);
      $(image).css('-ms-animation-delay', delay);
      $(image).css('-o-animation-delay', delay);
      $(image).css('animation-delay', delay);
      $(image).addClass('animated flipInX');
    });
  },
  template: '<a href="{{link}}" target="_blank"><img src="{{image}}" /><div class="likes">&hearts; {{likes}}</div></a>'
});

これでエラーが発生します

No tag name specified. Use the 'tagName' option.

タグ付けされた名前の値を更新できるアイデアはありますか? 助けてくれてありがとう。

4

1 に答える 1

0

あなたが直面している問題の根本は、変数が JavaScript の関数に渡される方法にあります。

文字列は「値で渡されます」。これは、あなたの場合、 を実行してインスタンスを作成するときに、inputTextValueの値がInstafeed.js にコピーさnew Instafeed({ .. });れることを意味します。

これはinputTextValue、後で の値を変更しても、Instafeed.js の設定が更新されないことも意味します (Instafeed.js の設定時にコピーされたため)。

これを回避するには、feed変数のプロパティを変更して、Instafeed.js の設定を直接更新します。元のスクリプトを少し変更したバージョンを次に示します。

var num = 60;
var inputTextValue;
var feed = new Instafeed({
  get: 'tagged',
  tagName: 'placeholder',
  userId: 3614616,
  accessToken: '3614616.467ede5.abc0b5a861d34365a5c8dd8db0163c4b',
  limit:"100",
  resolution : "low_resolution",
  after: function () {
    var images = $("#instafeed").find('a');
    $.each(images, function(index, image) {
      var delay = (index * 75) + 'ms';
      $(image).css('-webkit-animation-delay', delay);
      $(image).css('-moz-animation-delay', delay);
      $(image).css('-ms-animation-delay', delay);
      $(image).css('-o-animation-delay', delay);
      $(image).css('animation-delay', delay);
      $(image).addClass('animated flipInX');
    });
  },
  template: '<a href="{{link}}" target="_blank"><img src="{{image}}" /><div class="likes">&hearts; {{likes}}</div></a>'
});

window.onkeyup = keyup;

function keyup(e) {
  inputTextValue = e.target.value;
  $('#searchValue').text(inputTextValue);

  if (e.keyCode == 13) {
    inputTextValue = e.target.value;
    feed.options.tagName = inputTextValue; // forceably update instafeed.js settings.
    feed.run();
  }
}
于 2015-03-19T03:42:12.713 に答える