Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    chiarimento menù ad albero

    Ciao a tutti, il mio sito ha un layout a due colonne.

    header in alto
    menu navigazione a sinistra
    contenuto a destra
    footer

    nel div a sinistra (quello di navigazione), utilizzo il seguente menu ad albero:

    http://www.destroydrop.com/javascripts/tree/v1/#

    il mio menu ad albero ha dei sotto menu.
    Se espando il menù ad albero, e clicco uno qualsiasi dei sottomenù, la relativa pagina viene caricata correttamente, ma il menù ad albero si chiude, mi ritorna alla posizione iniziale.

    Io invece vorrei che rimanesse così come l'ho espanso.

    Spero di aver chiarito il mio problema!
    Grazie a tutti per l'aiuto!
    aquatimer2000

  2. #2
    questo è il codice utilizzato

    codice:
    /**************************************************************************
    	Copyright (c) 2001-2003 Geir Landrö (drop@destroydrop.com)
    	JavaScript Tree - www.destroydrop.com/hjavascripts/tree/
    	Version 0.96	
    
    	This script can be used freely as long as all copyright messages are
    	intact.
    **************************************************************************/
    
    // Arrays for nodes and icons
    var nodes			= new Array();;
    var openNodes	= new Array();
    var icons			= new Array(6);
    
    // Loads all icons that are used in the tree
    function preloadIcons() {
    	icons[0] = new Image();
    	icons[0].src = "img/plus.gif";
    	icons[1] = new Image();
    	icons[1].src = "img/plusbottom.gif";
    	icons[2] = new Image();
    	icons[2].src = "img/minus.gif";
    	icons[3] = new Image();
    	icons[3].src = "img/minusbottom.gif";
    	icons[4] = new Image();
    	icons[4].src = "img/folder.gif";
    	icons[5] = new Image();
    	icons[5].src = "img/folderopen.gif";
    }
    // Create the tree
    function createTree(arrName, startNode, openNode) {
    	nodes = arrName;
    	if (nodes.length > 0) {
    		preloadIcons();
    		if (startNode == null) startNode = 0;
    		if (openNode != 0 || openNode != null) setOpenNodes(openNode);
    	
    		if (startNode !=0) {
    			var nodeValues = nodes[getArrayId(startNode)].split("|");
    			document.write("<a href=\"" + nodeValues[3] + "\" onmouseover=\"window.status='" + nodeValues[2] + "';return true;\" onmouseout=\"window.status=' ';return true;\"><img src=\"img/folderopen.gif\" align=\"absbottom\" alt=\"\" />" + nodeValues[2] + "</a>
    ");
    		} else document.write("<img src=\"img/base.gif\" align=\"absbottom\" alt=\"\" />Website
    ");
    	
    		var recursedNodes = new Array();
    		addNode(startNode, recursedNodes);
    	}
    }
    // Returns the position of a node in the array
    function getArrayId(node) {
    	for (i=0; i<nodes.length; i++) {
    		var nodeValues = nodes[i].split("|");
    		if (nodeValues[0]==node) return i;
    	}
    }
    // Puts in array nodes that will be open
    function setOpenNodes(openNode) {
    	for (i=0; i<nodes.length; i++) {
    		var nodeValues = nodes[i].split("|");
    		if (nodeValues[0]==openNode) {
    			openNodes.push(nodeValues[0]);
    			setOpenNodes(nodeValues[1]);
    		}
    	} 
    }
    // Checks if a node is open
    function isNodeOpen(node) {
    	for (i=0; i<openNodes.length; i++)
    		if (openNodes[i]==node) return true;
    	return false;
    }
    // Checks if a node has any children
    function hasChildNode(parentNode) {
    	for (i=0; i< nodes.length; i++) {
    		var nodeValues = nodes[i].split("|");
    		if (nodeValues[1] == parentNode) return true;
    	}
    	return false;
    }
    // Checks if a node is the last sibling
    function lastSibling (node, parentNode) {
    	var lastChild = 0;
    	for (i=0; i< nodes.length; i++) {
    		var nodeValues = nodes[i].split("|");
    		if (nodeValues[1] == parentNode)
    			lastChild = nodeValues[0];
    	}
    	if (lastChild==node) return true;
    	return false;
    }
    // Adds a new node to the tree
    function addNode(parentNode, recursedNodes) {
    	for (var i = 0; i < nodes.length; i++) {
    
    		var nodeValues = nodes[i].split("|");
    		if (nodeValues[1] == parentNode) {
    			
    			var ls	= lastSibling(nodeValues[0], nodeValues[1]);
    			var hcn	= hasChildNode(nodeValues[0]);
    			var ino = isNodeOpen(nodeValues[0]);
    
    			// Write out line & empty icons
    			for (g=0; g<recursedNodes.length; g++) {
    				if (recursedNodes[g] == 1) document.write("<img src=\"img/line.gif\" align=\"absbottom\" alt=\"\" />");
    				else  document.write("<img src=\"img/empty.gif\" align=\"absbottom\" alt=\"\" />");
    			}
    
    			// put in array line & empty icons
    			if (ls) recursedNodes.push(0);
    			else recursedNodes.push(1);
    
    			// Write out join icons
    			if (hcn) {
    				if (ls) {
    					document.write("<a href=\"javascript: oc(" + nodeValues[0] + ", 1);\"><img id=\"join" + nodeValues[0] + "\" src=\"img/");
    					 	if (ino) document.write("minus");
    						else document.write("plus");
    					document.write("bottom.gif\" align=\"absbottom\" alt=\"Open/Close node\" /></a>");
    				} else {
    					document.write("<a href=\"javascript: oc(" + nodeValues[0] + ", 0);\"><img id=\"join" + nodeValues[0] + "\" src=\"img/");
    						if (ino) document.write("minus");
    						else document.write("plus");
    					document.write(".gif\" align=\"absbottom\" alt=\"Open/Close node\" /></a>");
    				}
    			} else {
    				if (ls) document.write("<img src=\"img/joinbottom.gif\" align=\"absbottom\" alt=\"\" />");
    				else document.write("<img src=\"img/join.gif\" align=\"absbottom\" alt=\"\" />");
    			}
    
    			// Start link
    			document.write("<a href=\"" + nodeValues[3] + "\" onmouseover=\"window.status='" + nodeValues[2] + "';return true;\" onmouseout=\"window.status=' ';return true;\">");
    			
    			// Write out folder & page icons
    			if (hcn) {
    				document.write("<img id=\"icon" + nodeValues[0] + "\" src=\"img/folder")
    					if (ino) document.write("open");
    				document.write(".gif\" align=\"absbottom\" alt=\"Folder\" />");
    			} else document.write("<img id=\"icon" + nodeValues[0] + "\" src=\"img/page.gif\" align=\"absbottom\" alt=\"Page\" />");
    			
    			// Write out node name
    			document.write(nodeValues[2]);
    
    			// End link
    			document.write("</a>
    ");
    			
    			// If node has children write out divs and go deeper
    			if (hcn) {
    				document.write("<div id=\"div" + nodeValues[0] + "\"");
    					if (!ino) document.write(" style=\"display: none;\"");
    				document.write(">");
    				addNode(nodeValues[0], recursedNodes);
    				document.write("</div>");
    			}
    			
    			// remove last line or empty icon 
    			recursedNodes.pop();
    		}
    	}
    }
    // Opens or closes a node
    function oc(node, bottom) {
    	var theDiv = document.getElementById("div" + node);
    	var theJoin	= document.getElementById("join" + node);
    	var theIcon = document.getElementById("icon" + node);
    	
    	if (theDiv.style.display == 'none') {
    		if (bottom==1) theJoin.src = icons[3].src;
    		else theJoin.src = icons[2].src;
    		theIcon.src = icons[5].src;
    		theDiv.style.display = '';
    	} else {
    		if (bottom==1) theJoin.src = icons[1].src;
    		else theJoin.src = icons[0].src;
    		theIcon.src = icons[4].src;
    		theDiv.style.display = 'none';
    	}
    }
    // Push and pop not implemented in IE
    if(!Array.prototype.push) {
    	function array_push() {
    		for(var i=0;i<arguments.length;i++)
    			this[this.length]=arguments[i];
    		return this.length;
    	}
    	Array.prototype.push = array_push;
    }
    if(!Array.prototype.pop) {
    	function array_pop(){
    		lastElement = this[this.length-1];
    		this.length = Math.max(this.length-1,0);
    		return lastElement;
    	}
    	Array.prototype.pop = array_pop;
    }
    aquatimer2000

  3. #3
    Premesso che non conosco lo script che usi, il problema sta sicuramente nel fatto che dal primo momento in cui la pagina viene interamente ricaricata, tutto quello che non è stato salvato o lato server nella sessione o lato client nei cookie, viene di certo perso.

    Quindi, o fai in modo che il link che viene cliccato contenga un qualche parametro che poi il js nella pagina destinazione userà per aprire di nuovo l'albero nel punto giusto, oppure fai in modo che il js che apre una voce dell'albero si segni in un cookie lo stato dell'albero e lo rilegga al caricamento della successiva pagina, oppure passi ad un qualcosa che ad ogni click sui simboli di apertura/chiusura degli elementi dell'albero faccia una chiamata ajax al server, e poi usi uno script lato server che pre-prepari il menu già nella configurazione che ti serve.

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.