编辑:下面是关于以下问题的JSFiddle。
http://jsfiddle.net/x28ojg6w/
因此,我试图用JavaScript激活一个模板,但它有一段时间没有工作,最后我通过在一个看似不相关的代码块中将For-In循环更改为for循环来修复它。
下面的代码是我更改为for循环的入内循环。注释掉的代码是不工作的原始代码,未注释的for循环是现在工作的代码。此代码用于更改类元素所有实例中文本的字体大小:
var release4 = document.getElementsByClassName("release-4");
// for (item in release4){
// release4[item].style.fontSize = "2em";
// };
for (var i = 0 ; i < release4.length ; i++) {
release4[i].style.fontSize = "2em";
}这是我用来激活模板的代码。它不是第4版的一部分:
var tmpl = document.getElementById('hidden');
document.body.appendChild(tmpl.content.cloneNode(true));下面是与之配套的HTML:
<html>
<head>
<title>Manipulate the DOM</title>
</head>
<body>
<div id="release-0">
<p class="release-4"> Here is some text, add a class "done" to the parent div</p>
</div>
<div id="release-1">
<p>remove the #release-1 div</p>
</div>
<h1>Change this text to finish release 2</h1>
<div id="release-3">
<p class="release-4"> add CSS to this div</p>
</div>
<template id="hidden">
<div>
<h1> Congrats! You finished the challenge.</h1>
<img src="http://media.giphy.com/media/2UpzC3iPenf44/giphy.gif">
</div>
</template>
<script type="text/javascript" src="home_page.js"></script>
</body>
</html>我的问题是,为什么更改For循环会产生影响?谢谢大家!
JS文件中的所有其他代码只影响in版本-0、版本-1和版本-3,以及h1标记。类名、显示、innerHTML和背景色是对它们所做的唯一更改。
发布于 2014-11-21 15:56:57
如果我在for in循环中console.log() item,它会产生:
0
1
length
item
namedItem我认为length,ìtem和namedItem犯了错误。
更新:有了Array.from,它就像预期的那样工作。
var release4 = Array.from(document.getElementsByClassName("release-4"));
for (item in release4){
release4[item].style.fontSize = "2em";
};https://stackoverflow.com/questions/26937800
复制相似问题