有人可以解释为什么会有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>
答案 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个