0

HTML :

<body>
  <canvas id="canvas1"></canvas>
  <canvas id="canvas2"></canvas>
</body>

Javascript :

window.onload = function() {
  var canvasElements = document.getElementsByTagName("canvas");
  for ( var index in canvasElements) {
  }
  for ( var index = 0; index < canvasElements.length; index++) {
  }
}

これら 2 つのループの反復回数は同じではありません。なぜなのかご存知ですか ?

4

1 に答える 1

5

document.getElementsByTagName("canvas")1 つのプロパティ「長さ」と 2 つのメソッド「item」と「namedItem」を持つ HTMLCollection を返します。

したがって、FOR ... IN ループは、そのコレクション内のアイテムと HTMLCollection のメンバーを反復処理します。
したがって、5回の反復があります:

  • HTMLElement ごとに 2 回の繰り返し、ここでは canvasElement
  • 各メソッドの 2 回の反復: item、namedItem
  • プロパティの 1 回の反復: 長さ

document.getElementsByTagName("canvas")[index] がアイテムを参照するため、for(...;...;...) ループはアイテムのみを反復します。

この応答が明確であることを願っています!
それ以外の場合は、詳細をお尋ねください...

いくつかの参照:

  • https://developer.mozilla.org/en-US/docs/DOM/HTMLCollection
  • https://developer.mozilla.org/en-US/docs/DOM/HTMLElement
  • http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#html要素
  • http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-58190037
  • http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-75708506

于 2012-09-20T13:25:07.117 に答える