www.gusucode.com > 支持三级展开的CSS多级网站菜单源码程序 > 支持三级展开的CSS多级网站菜单/adxmenuv4/adxmenu-v4/code/ADxMenu.js

    /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	ADxMenu.js - v4 (4.21) - helper script for Internet Explorer, up to version 6
	http://aplus.co.yu/adxmenu/
	- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
	(c) Copyright 2003, 2008, Aleksandar Vacic, aplus.co.yu Download by http://www.srcfans.com
		This work is licensed under the CC Attribution 3.0 Unported license
		To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ or
		send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
//	adds support for WCH. if you need WCH, then load WCH.js BEFORE this file
if (typeof(WCH) == "undefined") WCH = null;

//	hide submenus
document.write('<style type="text/css" media="all">.menu ul {visibility:hidden; position:absolute;}</style>');

var ADxMenu = function() {
	var self = this;

	this.Init = function() {
		self.adxmDL.load(Setup);
	};

	function Setup() {
		var aTmp2, i, j, oLI, aUL, aA;
		var aTmp = xGetElementsByClassName("adxm", document, "ul");
		for (i=0;i<aTmp.length;i++) {
			//	add (or remove) "adxie" class, to be used in cases when two different styles are required: one when Javascript is visible and one when it's not
			//	aTmp[i].className += " adxie";
			aTmp[i].className = aTmp[i].className.replace("adxie", "");
			//	setup drop-down goodness
			aTmp2 = aTmp[i].getElementsByTagName("li");
			for (j=0;j<aTmp2.length;j++) {
				oLI = aTmp2[j];
				aUL = oLI.getElementsByTagName("ul");
				//	if item has submenu, then make the item hoverable
				if (aUL && aUL.length) {
					oLI.UL = aUL[0];	//	direct submenu
					aA = oLI.getElementsByTagName("a");
					if (aA && aA.length)
						oLI.A = aA[0];	//	direct child link
					//	li:hover
					oLI.onmouseenter = function() {
						this.className += " adxmhover";
						this.UL.className += " adxmhoverUL";
						if (this.A) this.A.className += " adxmhoverA";
						if (WCH) WCH.Apply( this.UL, this, true );
					};
					//	li:blur
					oLI.onmouseleave = function() {
						this.className = this.className.replace(/adxmhover/,"");
						this.UL.className = this.UL.className.replace(/adxmhoverUL/,"");
						if (this.A) this.A.className = this.A.className.replace(/adxmhoverA/,"");
						if (WCH) WCH.Discard( this.UL, this );
					};
				}
			}	//for-li.submenu
		}	//for-ul.adxm
	};

	/*	xGetElementsByClassName()
		Returns an array of elements which are
		descendants of parentEle and have tagName and clsName.
		If parentEle is null or not present, document will be used.
		if tagName is null or not present, "*" will be used.
		credits: Mike Foster, cross-browser.com.
	*/
	function xGetElementsByClassName(clsName, parentEle, tagName) {
		var elements = null;
		var found = new Array();
		var re = new RegExp('\\b'+clsName+'\\b');
		if (!parentEle) parentEle = document;
		if (!tagName) tagName = '*';
		if (parentEle.getElementsByTagName) {elements = parentEle.getElementsByTagName(tagName);}
		else if (document.all) {elements = document.all.tags(tagName);}
		if (elements) {
			for (var i = 0; i < elements.length; ++i) {
				if (elements[i].className.search(re) != -1) {
					found[found.length] = elements[i];
				}
			}
		}
		return found;
	}
	
	/*	allows instant "window.onload" (DOM.onload) function execution. shortened version, just IE code
		credits: Dean Edwards/Matthias Miller/John Resig/Rob Chenny
		http://www.cherny.com/webdev/27/domloaded-updated-again
	*/
	this.adxmDL = {
		onload: [],
		loaded: function() {
			if (arguments.callee.done) return;
			arguments.callee.done = true;
			for (i = 0;i < self.adxmDL.onload.length;i++) self.adxmDL.onload[i]();
		},
		load: function(fireThis) {
			this.onload.push(fireThis);
			/*@cc_on @*/
			/*@if (@_win32)
			var proto = "src='javascript:void(0)'";
			if (location.protocol == "https:") proto = "src=//0";
			document.write("<scr"+"ipt id=__ADXMie_onload defer " + proto + "><\/scr"+"ipt>");
			var script = document.getElementById("__ADXMie_onload");
			script.onreadystatechange = function() {
			    if (this.readyState == "complete") {
			        self.adxmDL.loaded();
			    }
			};
			/*@end @*/
		}
	};
	
	return this;
}();
//	load the setup function
ADxMenu.Init();
//本源代码下载自:源 码 爱 好 者(http://www.c o d e f a n s.net)