0

クラスがロードされてドキュメントに追加されると、クラスがリスト項目から削除される非常に基本的なアニメーションに取り組んでいます。私が抱えている問題は、アニメーション自体にあります。下の画像のようにアニメーションを段階的に実行したいのですが...

欲しいアニメーション

実際には、ループは完全に実行され、console.log メッセージは段階的に出力されますが、ループが完了するとクラスはすべて同時に削除されます。この動作を変更するにはどうすればよいですか? console.log メッセージが段階的に表示されるのに、classList.remove 機能が同時に実行されないのはなぜですか?

これが私のコードです...

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}


/**/
function showListItems() {
  var listItems = document.querySelector('.idList');
  var n = 20;
  var c = 0;
  var itemArray = new Array();
  for (var i = 0; i < listItems.children.length; i++) {
    var item = listItems.children[i];
    if (item.classList && item.classList.contains('idList__item--hide')) {
      console.log('Item: ', item);
      itemArray[c] = item;
      c++;
    }
  }
  console.log('Item Array: ', itemArray);
  itemArray.forEach(function(el, index) {
    sleep(n);
    el.classList.remove('idList__item--hide');
    console.log("EL[" + index + "]: ", el);
  });
}

このコードは複雑すぎるように見えるかもしれませんが、おそらくそうかもしれませんが、考えられることはすべて試しました。Promise、for ループ、現在は forEach メソッドを使用してみました。

ありがとうございました。

4

3 に答える 3