PS:所谓模糊控制是指,当一个层的显示与否未知的情况下,触发这个函数时,被指定的层,原本是显示的变为不显示,而原本不显示的变为显示,才子称其为模糊控制,汗,这种名称都被才子想得出来,晕一下。
原函数如下:
function viewnone(e){
var obj = document.getElementById(e);
obj.style.display=(obj.style.display=="none")?"":"none";
}
<div id="testDiv1">这里是层1</div>
<input type="button" value="层的开关" onclick="viewnone('testDiv1');" />
函数简单高效,符合HTML DOM,所有浏览器均有效。
但今天做一个页面,需要指定某个层的显示与否,是明确指定,就算原本是显示的,触发一个函数仍然是显示,反之也一样。那么上面这个函数就显示不适合了,本来想重新编写一个函数来控制的,想想没什么必要,干脆直接在原函数上修改一下就行了,于是就有了下面这个函数:
function viewnone(e){
var obj = document.getElementById(e);
obj.style.display=(obj.style.display=="none")?"":"none";
if (arguments.length == 2) {
if (arguments[1]=="show") {
obj.style.display="";
} else if (arguments[1]=="hide") {
obj.style.display="none";
}
}
}
<div id="testDiv2">这里是层2</div>
<input type="button" value="关闭层2" onclick="viewnone('testDiv2','hide');" />
<input type="button" value="打开层2" onclick="viewnone('testDiv2','show');" />
上面这个修改后的函数,就添加了几行代码,通过取得arguments的长度来判断是否有指定层的开关,如果arguments长度为2,表示引入的参数有两个,第一个不用多,就是DOM的层ID,而第二个参数就是明确指定的开关值,其值有两个:分别为show和hide,就是通过判断这个参数的值来明确指定层的显示与否,后面的代码相信不用多解释大家也都应该明白意思了。
还有疑问的请看详细的使用范例:
http://www.54caizi.org/demo/javascript-viewnone.html
风流才子 作品,转帖请保留原文地址链接,谢谢合作!
才子小窝:http://www.54caizi.org