どうやって使うの?DOM要素のforeach ?


このポストのタイトルは、私が最初にgoogledしたものです.ここで何が私をそこに得たか
私は、イベントリストのためにローカル時間を表示することに取り組んでいました(まだPRをしませんでした).そのために、すべての要素にタイムスタンプを付けてクラスを追加しました.<span class="utc-time"><%= event.starts_at %></span>私は、ページ上のすべてのタイムスタンプを取得し、ループを介してループし、ローカル時間を反映するためにinnerHTMLを更新します.私は通常、ループのものを必要とするときにforのステートメントを使用しますが、私は.forEach関数を試してみることにしました.
var timestamps = document.getElementsByClassName("utc-time");

timestamps.forEach(function(timestamp) {
      localTime = updateLocalTime(timestamps[i].innerHTML);
      timestamps[i].innerHTML = localTime;
    });
私は、このエラーを得ました:

最終的に、私はtimestampsが配列ではないことを理解しました.

Although NodeList is not an Array, it is possible to iterate on it using forEach(). It can also be converted to an Array using Array.from().

However some older browsers have not yet implemented NodeList.forEach() nor Array.from(). But those limitations can be circumvented by using Array.prototype.forEach() (more in this document).


私は、おそらく「特異性のためにノイローゼを通してループする方法」をgoogledしなければなりませんでした.とにかく、こう書いてみました.
    Array.prototype.forEach.call(timestamps, function (timestamp) {
      localTime = updateLocalTime(timestamp.innerHTML);
      timestamp.innerHTML = localTime;
    });
そして、それは働いた!しかし、私がそれを示したとき
彼は、簡単なfor声明が働いただろうと私に言いました.そして、おそらく少しより安全でしょう.なので私は一番よく知っていたことに戻りました.
    for (var i = 0; i < timestamps.length; i++) {
      localTime = updateLocalTime(timestamps[i].innerHTML);
      timestamps[i].innerHTML = localTime
    }
少なくとも今日はNodelistsについて何かを学んだツ)_/¯