对于第一功能
var Obj=document.getElementById(Obj)?document.getElementById(Obj):Obj;
第一行获取由它的ID的对象如果Obj
是一个字符串,它是一个DOM元素的ID。否则,它将仅保留Obj
的值。这是使用“三元条件”运算符a? b: c
。如果a
是真的,则作为b
的值,否则为c
。这样做可以让函数接受一个字符串或一个DOM元素。
Obj.className=Obj.className==NameA?NameB:NameA;
下一行设置CSS类从最后一行的DOM元素来NameB
如果CSS类的DOM元素是NameA
否则将其设置为NameA
。只要另一个类永远不会被分配给该元素,这将具有交换类的效果。如果另一个类别为分配给元素,则它将再次以NameA
开始循环。
function showMenu(iNo){
ExChgClsName("Menu_"+iNo,"MenuBox","MenuBox2");
}
第二功能刚刚施加第一交换的CSS类的DOM元素的以“MenuBox”和“MenuBox2”之间"Menu_"+iNo
ID。
个人,因为它的DOM的两个搜索时,它只是需要做一个我不喜欢的第一个函数的第一行。我会这样做
var Obj = document.getElementById(Obj) || Obj;
这应该是更有效的所有实现,并且肯定更具可读性。如果仅当document.getElementById
返回null
,它使用||
运营商作为后卫将Obj
指定回自己。
//运行showMenu功能 为什么不使用它像这样的“ – enjoylife 2011-02-25 02:42:54
所以浏览器不会按照链接重新加载t他整页 http://stackoverflow.com/questions/4131834/why-href-is-high-priority-than-onclick – 2011-02-25 02:59:18