为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下这里传的参数li是什么意思 传这个li所以下面的getElementByTagName前面才能用li这个范围限定吗

function showsubmenu(li){                      //这行的li是什么意思
	var submenu = li.getElementsByTagName("ul")[0];     
	submenu.style.display="block";                   
}

不传这个li参数那么getElementByTagName 前边的li 就不可以使用了吗

正在回答

6 回答

0 回复 有任何疑惑可以回复我~

函数里面的li只是一个参数变量,你可以命名什么都可以,重要的是你调用方法是传进去给这个li的值,比如说代码里面onmoseover=“showsubmenu(this)”,this指向的是当前调用这个showsubmenu的li对象,那么在调用方法的时候把this传进去就相当于li = this,就是参数li指向this,也就是指向当前调用这个showsubmenu的li对象

0 回复 有任何疑惑可以回复我~
element.getElementsByTagName(tagname)

里面的element是某个元素节点对象,所获得的是该元素对象下的以tagname为标签名的子节点的集合,所以

li.getElementsByTagName("ul")[0];中的li也相当于一个元素对象,具体指代那个元素对象不确定,需要在之前js语句中申明li表示的元素对象,如

var li=document.getElementsByTagName("li")[0];

则在showsubmenu(li)中传入的是"li"对应的第一个元素对象;

var li=document.getElementsByTagName("div")[0];

那么传入的就是“div”对应的第一个元素对象;


所以li只是一个变量,你可以用其他任何符合变量命令规则的名称替换它,只是这里可能li获取的是tagName="li"的元素结点,所以将这个变量名命名为li ,更加方便而已。

如果函数中不传入这个变量li,那么element.getElementsByTagName(tagname)中对应的element需要自行获取,或者直接用document来作为element来限定范围,其实document本身就是指整个HTML文档,只是限定范围更大

0 回复 有任何疑惑可以回复我~
#1

慕移动7208282 提问者

function showsubmenu(li){ //这行的li是什么意思 var submenu = document.getElementsByTagName("ul")[0]; //这里把li换成document submenu.style.display="block"; } 请问一下 如果我把element前边的li换成document 那么就是在整个文档中寻找ul赋值给submenu是这个意思吗
2017-09-20 回复 有任何疑惑可以回复我~
#2

慕移动7208282 提问者

如果我想寻找ul中的li那么就是 function showsubmenu(ul){ var submenu = ul.getElementsByTagName("li")[0]; }
2017-09-20 回复 有任何疑惑可以回复我~

sorry  我试了下我弄错了,你別看,这是误导。

0 回复 有任何疑惑可以回复我~
#1

慕移动7208282 提问者

嘿嘿没事 大家一起讨论一起进步 你能帮我看就已经挺好的了 老师没怎么注重讲这个li 所以我也没搞懂 我再看看别人怎么回答的把
2017-09-19 回复 有任何疑惑可以回复我~

如果不传入参数的话,下面html 里面的<li>调用函数就不能传入参数,只能直接调用函数:oumouseover="showsubmenu()" 这样,  这样的话定义函数的时候,里面就得先获取到li标签:var lis = document.getElementsByTagName("li")[0]; 然后再在li标签上获取二级标题ul:var submenu = lis.getElementsByTagName("ul")[0];

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
形形色色的下拉菜单
  • 参与学习       106972    人
  • 解答问题       543    个

本教程从易到难,循循渐进,运用不同技术实现动态下拉菜单

进入课程

请问一下这里传的参数li是什么意思 传这个li所以下面的getElementByTagName前面才能用li这个范围限定吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信