在现代浏览器中查看以下文件时,您会看到多少图像

时间:2016-08-31 02:30:23

标签: javascript html5

有人可以解释为什么会有5张图片。我认为应该有4张图片。一个在循环之前,其余在循环执行之后。 我对代码的解释如下: 我:0 1 2 3 4 5 6 7 c:0 1 2 3 = 0 1 2 3 = 0 1 img:1 2 3 2 3 3 2 3注意:我正在解释continue命令,因为不遵循代码并转到下一次迭代,因此没有为i = 5迭代克隆/追加另一个图像

<!doctype html>
<html>
  <head>
    <script>
      function do_something() {
        var theBody = document.getElementsByTagName("body")[0];
        var theImg = document.createElement("img");
        theImg.src = "cat.png";
        theBody.appendChild(theImg.cloneNode(true));
        var count = 0;
        for (var i = 0; i < 10; i++, count++) {
            if (i == 5) continue;
            if (count == 3) {
                count = 0;
                theBody.removeChild(theBody.lastChild);
            } else {
                theBody.appendChild(theImg.cloneNode(true));
            }
            if (i > 7) break;
        }
      }
    </script>
  </head>
  <body onload="do_something()"></body>
</html>

2 个答案:

答案 0 :(得分:1)

我有点难以解释,但希望你知道,

在循环之前你附加一个图像(1), 和下一个0 1 2添加3 img,(4)
但在3删除1所以(3),
然后继续4加1 img(4)
5只是路过
所以6将是另一个3只删除1 img(3)
并满足7添加img img(4)
但请注意,你的最后一个if大于7并且在最后一行检查,
所以当我成为8时仍然添加img到身体img(5) 这就是为什么你会看到总共5张图片的原因

答案 1 :(得分:1)

第一张图片:

 theBody.appendChild(theImg.cloneNode(true));

让我们分析循环。

for (var i = 0; i < 10; i++, count++)

它有10个计数加上原来的11个,但是:

 if (i > 7) break;

请注意,这是代码的结尾 - 因此它实际上会为#8运行

重估我们的潜在总数,我们有9 + 1 = 10.

由于这一行,我们可以丢弃计数#5:

if (i == 5) continue;

所以现在我们的计数是9。

下一个语句会导致每4个计数a)不打印图像,b)删除现有图像。

if (count == 3)
   count = 0;
   theBody.removeChild(theBody.lastChild);

所以9/4 = 2.因此它将删除2张图像而不打印2张新图像。所以现在我们有5个