javascript中的循环不起作用
loop in javascript not working
我想选择html中有多少div。所以我用了.长度的方法,但并没有给我想要的结果。你可以在这里看到一个演示http://jsfiddle.net/WbwuC/
<style>
.main { width:980px; margin:0 auto; border:solid 1px #F00; overflow:hidden}
.box { width:300px; float:left; margin-right:20px; background:#00F; height:200px;}
.new {border:solid 2px #333;}
</style>
<script type="text/javascript">
var amy= document.getElementsByTagName('div');
for (i=0;i<amy.length;i++){
var jar= amy[i];
}
alert(jar)
</script>
</head>
<body>
<div id="main">
<div class="box"><h3>first</h3></div>
<div class="box"><h3>secnond</h3></div>
<div class="box"><h3>third</h3></div>
</div>
</body>
这不起作用,因为在脚本执行时,文档还没有像正文中的div那样处理。尝试将脚本移动到div下,或者等待文档加载事件。
如果脚本在加载页面时运行,那么在div出现之前,还没有div。您应该添加一个页面加载事件来触发代码。你的jsfiddle工作得很好…它已经为代码启用了onload。
http://jsfiddle.net/EEjaP/
这是工作演示。但真的不明白你的期望。请在下面找到代码的解释。
var amy= document.getElementsByTagName('div');
上面一行只是选择HTML页面上的Div标签。现在,当前的HTML包含三个封装在主DIV中的DIV标记,即总共4个DIV元素。所以,第一个警报是"4"。
for (var i=0;i<amy.length-1;i++){
var jar= amy[i];
alert(jar.innerHTML);
}
此代码循环使用四个DIV标记。innerHTML用于显示该div中的内容。您将看到,首先,整个div块都发出了警报。之后,每个div都会收到警报。
求你了,让我知道这就是你想要的?
您可以简单地使用.length
。就像这样。。。jsFiddle
为了确保您的DOM已完全加载,您可以将脚本简单地放在html
文档的末尾,刚好在关闭body
-标记之前。
HTH,
--hennson
试试这个
for (i=0;i<amy.length;i++){
var jar= amy[i];
alert(jar) //put it here , ur problem will be solved
}
// alert(jar) //Dont put here
将脚本更改为:
<script type="text/javascript">
var amy = document.getElementsByTagName('div');
for (i = 0; i < amy.length; i++) {
var jar = i;
}
alert(jar);
</script>
根据您的澄清注释,如果您希望结果为4,最简单的方法是使用.length
,就像您在自己的示例中在循环中所做的那样!,无需循环:
var length = amy.length; // Will return 4
然而,如果你想循环,你可以使用这样的循环(非常不必要,因为你可以使用上面的长度属性!)
var length = 0;
for (i=0; i<amy.length; i++){
length++;
}
// After the loop has run, length will have value 4
为了让代码正常工作,您必须等待执行,直到DOM准备就绪。
此外,对于您的示例中的警报,您正在尝试向对象发出警报。由于alert方法需要一个字符串,它会将对象转换为其字符串表示[object htmlDivElement]
。
试试这个-
.main { width:980px; margin:0 auto; border:solid 1px #F00; overflow:hidden}
.box { width:300px; float:left; margin-right:20px; background:#00F; height:200px;}
.new {border:solid 2px #333;}
</style>
<script type="text/javascript">
function count() {
var amy= document.getElementsByTagName('div');
for (i=0;i<amy.length;i++){
var jar= amy[i];
}
alert(jar.className);
}
</script>
</head>
<body onload="count()">
<div id="main">
<div class="box"><h3>first</h3></div>
<div class="box"><h3>secnond</h3></div>
<div class="box"><h3>third</h3></div>
</div>
</body>
- 我的javascript for循环不起作用
- javascript for循环不起作用
- 循环通过数组的If语句不起作用
- 为什么我的While循环不起作用
- JS(node.js)而循环不起作用
- 来自MDN的循环示例的JavaScript不起作用
- Mustache.js每个循环都不起作用
- for循环中的jquery.load()不起作用
- For循环与数组不起作用
- JavaScript For循环与For in不起作用
- 为什么我所有的循环都不起作用
- JavaScript 数组/循环不起作用
- Javascript if-else循环不起作用
- 循环浏览页面上所有选中的复选框并将id拉入数组不起作用
- JavaScript的循环问题,将值插入数组将不起作用
- Javascript getElementsByName在PHP循环中不起作用
- Javascript循环数组无限不起作用
- 如果循环停止并且不起作用
- if-else循环和jquery在热应用程序或冷应用程序中不起作用
- 循环变量的Javascript不起作用