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

    ciclo for (per menù a schede)

    Ciao a tutti,
    mi trovo in questa situazione, praticamente devo creare un menù a schede molto simile a questo (http://www.html.it/demo/javascript/3...emo_index.html), ovvero cliccando sui vari "item" si aprono diverse schede.

    il codice html è questo:
    codice:
    <div id="b">
    <font color="#00000">
                    <nav>
                    <ul id="tabs">
    			[*]AG
    			[*]AN
    			[*]AO
    			[*]AP
    			[*]AQ
    		[/list]
                    <span id="indicator"></span>
                    </nav>
                    <div id="content">
    	
    		<section>
    		<nav1>
                    <ul id="tabs1">
    			[*]Filiale
    			[*]Ti
    			[*]Fa
    			[*]Fw1
    		[/list]
                    <span id="indicator1"></span>
    		</nav1>
    		       <div id="content1">
    		       <section1>
    		                <p align="center"><span style='text-decoration:none;  text-underline:none'><font color="#00000">► Filiale di Agrigento</font></span></p>
    	               </section1>
    	               <section1>
    		                <p align="center">[img]quadrato verde.png[/img] [img]quadrato rosso.png[/img]</p>
    	               </section1>
    	               <section1>
    		                <p align="center">[img]quadrato verde.png[/img] [img]quadrato rosso.png[/img]</p>
    	               </section1>
                           </div>
    </div>

    Funziona finchè ne uso soltanto uno di menù (cioè il primo <nav> e i vari <section>), ma se volessi farne altri, ovvero dei sottomenù all'interno del primo che funzionano allo stesso modo, devo creare ogni volta un ulteriore file javascript (unito ad un css) come questo:
    codice:
    (function(c){function p(e,b,a){var d=this,l=e.add(this),h=e.find(a.tabs),i=b.jquery?b:e.children(b),j;h.length||(h=e.children());i.length||(i=e.parent().find(b));i.length||(i=c(b));c.extend(this,{click:function(f,g){var k=h.eq(f);if(typeof f=="string"&&f.replace("#","")){k=h.filter("[href*="+f.replace("#","")+"]");f=Math.max(h.index(k),0)}if(a.rotate){var n=h.length-1;if(f<0)return d.click(n,g);if(f>n)return d.click(0,g)}if(!k.length){if(j>=0)return d;f=a.initialIndex;k=h.eq(f)}if(f===j)return d;
    g=g||c.Event();g.type="onBeforeClick";l.trigger(g,[f]);if(!g.isDefaultPrevented()){o[a.effect].call(d,f,function(){g.type="onClick";l.trigger(g,[f])});j=f;h.removeClass(a.current);k.addClass(a.current);return d}},getConf:function(){return a},getTabs:function(){return h},getPanes:function(){return i},getCurrentPane:function(){return i.eq(j)},getCurrentTab:function(){return h.eq(j)},getIndex:function(){return j},next:function(){return d.click(j+1)},prev:function(){return d.click(j-1)},destroy:function(){h.unbind(a.event).removeClass(a.current);
    i.find("a[href^=#]").unbind("click.T");return d}});c.each("onBeforeClick,onClick".split(","),function(f,g){c.isFunction(a[g])&&c(d).bind(g,a[g]);d[g]=function(k){c(d).bind(g,k);return d}});if(a.history&&c.fn.history){c.tools.history.init(h);a.event="history"}h.each(function(f){c(this).bind(a.event,function(g){d.click(f,g);return g.preventDefault()})});i.find("a[href^=#]").bind("click.T",function(f){d.click(c(this).attr("href"),f)});if(location.hash)d.click(location.hash);else if(a.initialIndex===
    0||a.initialIndex>0)d.click(a.initialIndex)}c.tools=c.tools||{version:"1.2.3"};c.tools.tabs={conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:false,history:false},addEffect:function(e,b){o[e]=b}};var o={"default":function(e,b){this.getPanes().hide().eq(e).show();b.call()},fade:function(e,b){var a=this.getConf(),d=a.fadeOutSpeed,l=this.getPanes();d?l.fadeOut(d):l.hide();l.eq(e).fadeIn(a.fadeInSpeed,b)},slide:function(e,b){this.getPanes().slideUp(200);
    this.getPanes().eq(e).slideDown(400,b)},ajax:function(e,b){this.getPanes().eq(0).load(this.getTabs().eq(e).attr("href"),b)}},m;c.tools.tabs.addEffect("horizontal",function(e,b){m||(m=this.getPanes().eq(0).width());this.getCurrentPane().animate({width:0},function(){c(this).hide()});this.getPanes().eq(e).animate({width:m},function(){c(this).show();b.call()})});c.fn.tabs=function(e,b){var a=this.data("tabs");if(a){a.destroy();this.removeData("tabs")}if(c.isFunction(b))b={onBeforeClick:b};b=c.extend({},
    c.tools.tabs.conf,b);this.each(function(){a=new p(c(this),e,b);c(this).data("tabs",a)});return b.api?a:this}})(jQuery);
    
    
            $(function() {
    			
    			var indicator = $('#indicator'),
    					indicatorHalfWidth = indicator.width()/2,
    					lis = $('#tabs').children('li');
    
    			$("#tabs").tabs("#content section", {
    				effect: 'fade',
    				fadeOutSpeed: 0,
    				fadeInSpeed: 400,
    				onBeforeClick: function(event, index) {
    					var li = lis.eq(index),
    					    newPos = li.position().left + (li.width()/2) - indicatorHalfWidth;
    					indicator.stop(true).animate({ left: newPos }, 600, 'easeInOutExpo');
    				}
    			});	
    
    		});
    
    nav {
    	margin-bottom: 20px;
    	position: relative;
    }
    
    nav ul {
    	overflow: hidden;
    	padding-bottom: 10px;
    	border-bottom: 5px solid #000;
    }
    
    nav li {
    	float: left;
    	margin-right: 35px;
    }
    
    nav li a {
    	color: #666;
    	font-weight: bold;
    }
    
    nav li a:hover,
    nav li a:focus,
    nav li a.current {
    	color: #000;
    }
    
    nav #indicator {
    	position: absolute;
    	left: 15px;
    	bottom: 21px;
    	width: 12px;
    	height: 7px;
    	background-image: url('../img/notch2.png');
    }
    
    #content section {
    	display: none;
    }
    
    #content p {
    	margin-bottom: 1em;
    	max-width: 50%;
    	line-height: 1.6;
    }
    e ogni nuovo file dovrà avere delle variabili diverse o non funzionano, potrei per esempio incrementarle di una cifra ogni volta, ad esempio (nav, nav1, nav2, nav3 ......).
    Il problema è che me ne occorrono 65, e chiaramente non mi sembra il caso di mettermi a fare 65 file javascript.



    Avevo quindi pensato di usare un ciclo for con una variabile che va da 0 a 64, in modo da creare un solo file, ma non ho idea di come fare.

    Potete aiutarmi ???

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    usa un sistema di tabs che sia gia' predisposto ad essere utilizzato molteplici volte nello stesso documento

    jquery ui tabs e' un widget perfetto per lo scopo

    vedo ora che quelle tabs usano jquery tools... a mio parere c'e' da starne abbondantemente alla larga, poi fai come preferisci

    ciao

  3. #3
    grazie per l'idea, ma ho visto i file css e js e sono enormi, impossibili da modificare.
    mi servirebbe una soluzione più personalizzabile.

    grazie comunque

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    se parli dei file js e css di jquery ui dubito tu abbia bisogno di modificarli...

  5. #5
    beh si se voglio adattare la grafica del tabs al sito
    solo per una questione di grafica

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.