怎么确定循环的次数

aphen 2011-05-18 09:35:33
现在有8项,设为固定8次循环时效果能实现,想改成循环次数根据item的多少来变动,而不是确定的一个数,或者如何改能更好的控制?
<script language="javascript">
function turnit(obj_name)
{
var ss=document.getElementById(obj_name);
var dd="item";
if (ss.className=="none")
{
for(i=1;i<=8;i++)
{
if(dd+i=="")
{}
else
{
document.getElementById("item"+ i).className="none";
}
}
ss.className="nomorl";
}
else
{
ss.className="none";
}
}
</script>
<!--头部-->
<div class="menu1" onclick="turnit('item1')"><a href="#">内科</a></div>
<ul class="nomorl" id="item1">
<li><a href="#" target="_self">呼吸内科</a></li>
<li><a href="#" target="_self">心血管内科</a></li>
<li><a href="#" target="_self">消化内科</a></li>
<li><a href="#" target="_self">肾内科</a></li>
<li><a href="#" target="_self">神经内科</a></li>
<li><a href="#" target="_self">内分泌科</a></li>
<li><a href="#" target="_self">血液科</a></li>
<li><a href="#" target="_self">风湿内科</a></li>
</ul>
<div class="clear"></div>
<!--四肢-->
<div class="menu1" onclick="turnit('item2')"><a href="#">外科</a></div>
<ul class="none" id="item2">
<li><a href="#" target="_self">上肢</a></li>
<li><a href="#" target="_self">下肢</a></li>
</ul>

<div class="menu1" onclick="turnit('item3')"><a href="#">肿瘤科</a></div>
<ul class="none" id="item3">
<li><a href="#" target="_self">上肢</a></li>
<li><a href="#" target="_self">下肢</a></li>
</ul>

<div class="menu1" onclick="turnit('item4')"><a href="#">男科</a></div>
<ul class="none" id="item4">
<li><a href="#" target="_self">上肢</a></li>
<li><a href="#" target="_self">下肢</a></li>
</ul>

<div class="menu1" onclick="turnit('item5')"><a href="#">妇科</a></div>
<ul class="none" id="item5">
<li><a href="#" target="_self">上肢</a></li>
<li><a href="#" target="_self">下肢</a></li>
</ul>

<div class="menu1" onclick="turnit('item6')"><a href="#">儿科</a></div>
<ul class="none" id="item6">
<li><a href="#" target="_self">上肢</a></li>
<li><a href="#" target="_self">下肢</a></li>
</ul>

<div class="menu1" onclick="turnit('item7')"><a href="#">五官科</a></div>
<ul class="none" id="item7">
<li><a href="#" target="_self">上肢</a></li>
<li><a href="#" target="_self">下肢</a></li>
</ul>

<div class="menu1" onclick="turnit('item8')"><a href="#">传染科</a></div>
<ul class="none" id="item8">
<li><a href="#" target="_self">上肢</a></li>
<li><a href="#" target="_self">下肢</a></li>
</ul>
...全文
435 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
aphen 2011-05-24
  • 打赏
  • 举报
回复
按你的方法替换没反应,然后我就改了测试看
cb1156 2011-05-19
  • 打赏
  • 举报
回复
我是要你把我写的for 替换你原来写的for
aphen 2011-05-18
  • 打赏
  • 举报
回复
怎么判断ID属性呢
Atai-Lu 2011-05-18
  • 打赏
  • 举报
回复
var nodes=document.getElementsByTagName("UL");
alert(nodes.length);

nodes.length就是你要循环的次数
aphen 2011-05-18
  • 打赏
  • 举报
回复
新手,js不是很好,能不能写个大致的代码,谢谢
cb1156 2011-05-18
  • 打赏
  • 举报
回复
说错了。 获得所有的ul
cb1156 2011-05-18
  • 打赏
  • 举报
回复
可以获得所有的DIV,然后判断id属性,indexOf(item) 大于0就执行操作
aphen 2011-05-18
  • 打赏
  • 举报
回复
好像是过了循环体,s值就没了
aphen 2011-05-18
  • 打赏
  • 举报
回复
<script language="javascript">

function turnit(obj_name)
{
var ss=document.getElementById(obj_name);
var nodes=document.getElementsByTagName("UL");
var s=document.getElementById('outer').getElementsByTagName('ul');

for(i=1;i<=nodes.length;i++){
if(nodes[i].id.indexOf("item")<0)
continue;
else
s++;

}


if (ss.className=="none")
{

for(i=1;i<=s.length;i++)
{
document.getElementById("item"+ i).className="none";
}
ss.className="nomorl";
}
else
{
ss.className="none";
}
}

</script>

我按照六楼的方法加进去,没反应,我把它修改了下,测试后发现s++后面加一个alert(s)循环次数是对的,可加在循环体外面警告框也没了,不知道是什么原因
Atai-Lu 2011-05-18
  • 打赏
  • 举报
回复
6楼的方法

或者用下面的方式

例如:
<div id="test">
<ul>
只取id="test"的div嵌套的所有ul
</ul>
</div>

那么可以这样

document.getElementById("test").getElementsByTagName("ul")
豆虫 2011-05-18
  • 打赏
  • 举报
回复
LZ可以在最外边套一层Div
<div id="outer">
<!-- 你的html代码 ...-->

</div>

判断item的多少的js代码
document.getElementById('outer').getElementsByTagName('ul').length
aphen 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ggxxkkll 的回复:]

引用 4 楼 luxu001207 的回复:
var nodes=document.getElementsByTagName("UL");
alert(nodes.length);

nodes.length就是你要循环的次数


这个
[/Quote]
不止这个地方有UL啊,其它地方也有,所以要根据ID判断,就是不知道怎么判断
giant7 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 luxu001207 的回复:]
var nodes=document.getElementsByTagName("UL");
alert(nodes.length);

nodes.length就是你要循环的次数
[/Quote]

这个
aphen 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cb1156 的回复:]

var allUl=document.getELementsByTagName("UL");
for(i=1;i<=allUl.length;i++){
if(allUl[i].id.indexOf("item")<0)
continue;
allUl[i].className="none";
}


for那里的代码改这样
[/Quote]
改了之后没反应了
cb1156 2011-05-18
  • 打赏
  • 举报
回复
var allUl=document.getELementsByTagName("UL");
for(i=1;i<=allUl.length;i++){
if(allUl[i].id.indexOf("item")<0)
continue;
allUl[i].className="none";
}


for那里的代码改这样

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧