Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    visualizzazione div a tempo

    Devo inserire in una pagina nove immagini che puntano ad altrettanti link.
    Le immagini devono però apparire a gruppi di tre. Ogni gruppo deve sostituire quello precedente, a rotazione, ogni tot millisecondi... lo script va inserito in una pagina .asp in cui non posso modificare l'header ed in cui non posso aggiungere altro asp (e nemmeno jquery).... QUalche suggerimento?

    Avevo provato una cosa del genere ma non va (e soprattutto più che sovrapporre i div con gli z-index vorrei mostrare solo quello di volta in volta visibile)


    codice:
    <div id="hid1"  style="visibility: hidden; position:absolute; background-color:#00F; z-index:10">
      <div>UNO</div>
      <div>DUE</div>
      <div>TRE</div>
    </div>
    
    <div id="hid2"  style="visibility: hidden; position:absolute; background-color:#3CF; z-index:11">
      <div>QUATTRO</div>
      <div>CINQUE</div>
      <div>SEI</div>
    </div>   
    
    <div id="hid3"  style="visibility: hidden; position:absolute; background-color:#f00; z-index:12">
      <div>SETTE</div>
      <div>OTTO</div>
      <div>NOVE</div>
    </div>
    
    <script type="text/javascript">
    function showIt(divId) {   
    document.getElementById(divId).style.visibility = "visible";  
    var zind=document.getElementById(divId).style.zIndex;   document.getElementById(divId).style.zIndex = zind+10;   
    }  
    
    setInterval("showIt('hid1')", 1000);  
    setInterval("showIt('hid2')", 3000); 
     setInterval("showIt('hid3')", 4002);   
    </script>
    spero di essermi fatto capire!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Esistono svariati modi per farlo, il primo che mi è venuto in mente, non l'ho provato qundi fatti dei test:


    codice:
    <div class="hid"  style="visibility: hidden; position ....
    
    var divCollec = document.getElementsByClassName("hid");
    var cont = 0;
    
    function showIt() {
    	for(i=0;i<divCollec.length;i++){
    		if(i != cont)
    			divCollec[i].style.visibility = "hidden";
    		else
    			divCollec[i].style.visibility = "visible";  
    	}
    	cont === divCollec.length-1 ? cont = 0 : cont++;
    }  
    
    setInterval(showIt, 3000);

  3. #3
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Altra possibilità…

    codice:
    <!doctype html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Esempio</title>
    <script type="text/javascript">
    function alternateDisplay (sClass) {
    	function switchItem () {
    		var nItem, nLen;
    		for (
    			nItem = 0, nLen = aList.length, nCurrent = (nCurrent + 1) % nLen;
    			nItem < nLen;
    			aList[nItem].style.display = nItem++ === nCurrent ? "block" : "none"
    		);
    	}
    	var nCurrent = -1, aList = document.getElementsByClassName(sClass);
    	switchItem();
    	setInterval(switchItem, 3000);
    }
    </script>
    </head>
    
    <body onload="alternateDisplay('alternanda');">
    <div id="hid1" class="alternanda" style="background-color: #0000ff;">
      <div>UNO</div>
      <div>DUE</div>
      <div>TRE</div>
    </div>
    
    <div id="hid2" class="alternanda" style="background-color: #33ccff;">
      <div>QUATTRO</div>
      <div>CINQUE</div>
      <div>SEI</div>
    </div>   
    
    <div id="hid3" class="alternanda" style="background-color: #ff0000;">
      <div>SETTE</div>
      <div>OTTO</div>
      <div>NOVE</div>
    </div>
    </body>
    </html>

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Non capirò mai perche' non usate jquery per queste cose !!!!!!

    Usare JQUERY!!!!!

    $(document).ready(function(){

    // Qui carichi gli elementi e bindi gli eventi
    $(".classeDeiDivCheDevoSmanacciare").each( function(id,elem){

    // FAI COSE

    } )




    })

  5. #5
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Originariamente inviato da Virus_101
    Non capirò mai perche' non usate jquery per queste cose !!!!!!
    Per almeno quattro validi motivi:
    • Perché l'utente l'ha chiesto esplicitamente.
    • Perché non ce n'è motivo.
    • Perché il codice che inserirai dentro "// FAI COSE" sarà sicuramente più lungo di quello che gli abbiamo postato.
    • Perché rallenterai l'apertura della pagina di ben 32 kb di codice da parsare.


    Aggiungo inoltre che senza jQuery puoi benissimo avere una struttura molto simile a quella che a te piace tanto, ma in puro JavaScript… così:

    codice:
    Array.prototype.forEach.call(document.getElementsByClassName("tuaClasse"), function(elem, id) {
    	// FAI COSE
    });
    oppure così:

    codice:
    Array.prototype.forEach.call(document.querySelectorAll(".tuaClasse"), function(elem, id) {
    	// FAI COSE
    });
    O, se non ti piace l'"eleganza", puoi anche "comprimere" il codice che avevo postato…:

    codice:
    window.onload = function () {
    	var a, b = -1, c = document.getElementsByClassName("alternanda");
    	setInterval((a=function(){var d,e;for(d=0,e=c.length,b=(b+1)%e;d<e;c[d].style.display=d++===b?"block":"none");},a(),a),3000);
    };
    E ricorda inoltre questo. Tra costruirti tu le cose in maniera mirata e usare una libreria multifunzionale la seconda opzione non sarà mai ottimizzata come la prima.
    Io ad esempio in questo periodo sto usando un vecchio pc con 700 Mhz di CPU. Sinceramente quando navigo faccio gli scongiuri per non incontrare pagine che usano jQuery.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Ti riporto quanto scritto dall'utente, probabilmente non lo hai letto o ti è sfuggito:

    lo script va inserito in una pagina .asp in cui non posso modificare l'header ed in cui non posso aggiungere altro asp (e nemmeno jquery)

  7. #7
    Ma grazie e stragrazie ragazzi!
    Vanno benissimo entrambi... Per usare quello di carlomarx forse dovrei fare qualche modifica perché non posso modificare l'header (anche se alla fine posso provare a chiedere di inserire il link al js) ma mi è molto servito guardare la struttura. Probabilmente utilizzerò quello di Vindav (magari metto il primo div visible così da non avere i tre secondi di buco). Ma grazie a tutti e tre. Preziosissimi.

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Originariamente inviato da carlomarx
    Per almeno quattro validi motivi:
    • Perché l'utente l'ha chiesto esplicitamente.
    • Perché non ce n'è motivo.
    • Perché il codice che inserirai dentro "// FAI COSE" sarà sicuramente più lungo di quello che gli abbiamo postato.
    • Perché rallenterai l'apertura della pagina di ben 32 kb di codice da parsare.

    Capisco solamente il discorso richiesta esplicita del cliente. E' un requisito e quindi su cio non discuto.


    Originariamente inviato da carlomarx
    Aggiungo inoltre che senza jQuery puoi benissimo avere una struttura molto simile a quella che a te piace tanto, ma in puro JavaScript… così:

    codice:
    Array.prototype.forEach.call(document.getElementsByClassName("tuaClasse"), function(elem, id) {
    	// FAI COSE
    });
    oppure così:

    codice:
    Array.prototype.forEach.call(document.querySelectorAll(".tuaClasse"), function(elem, id) {
    	// FAI COSE
    });
    O, se non ti piace l'"eleganza", puoi anche "comprimere" il codice che avevo postato…:

    codice:
    window.onload = function () {
    	var a, b = -1, c = document.getElementsByClassName("alternanda");
    	setInterval((a=function(){var d,e;for(d=0,e=c.length,b=(b+1)%e;d<e;c[d].style.display=d++===b?"block":"none");},a(),a),3000);
    };
    Ma bravo protitpizza tutto.... certo che puoi fare così nessuno te lo vieta ma sinceramente non ho tempo ne volgia di sbroccare ancora su queste cose.

    Questo te lo scrivi te
    c = document.getElementsByClassName("alternanda");

    Io faccio coisì
    c = $(".alternanda")

    E sono 300 mvolte piu' comodo e sicuro che funzioni ovunque.
    Jquery saranno anche 32k (una folliaaaa davvero troppo codice -.- ) carichi 1 immagine e hai caricato 10 volte tanto ... non ha senso il tuo discorso in questa ottica.
    Sinceramente preferisco di gran lunga le dichiarazione e le assegnazioni jquery che sono piu' oop style di quello schifo di chiamate funzionali di base js...


    Originariamente inviato da carlomarx

    E ricorda inoltre questo. Tra costruirti tu le cose in maniera mirata e usare una libreria multifunzionale la seconda opzione non sarà mai ottimizzata come la prima.
    QUesta e' davvero ma stampare e mettere sulla porta dell'ufficio !!!
    Sincermanete non e' vero, prova a dover gestire componenti non std e doverli anche rendere cross browser.... nel 90% dei casi jauery mi fornisce già tale componente e pure decentemente ottimizzato.
    Questi discorsi forse andavano bene 4-5 anni fa ma oggi ... sinceramente li trovo ridicoli.

    Originariamente inviato da carlomarx
    Io ad esempio in questo periodo sto usando un vecchio pc con 700 Mhz di CPU. Sinceramente quando navigo faccio gli scongiuri per non incontrare pagine che usano jQuery.
    [/quote]
    Fattacci tuoi, aggiorna il pc il mondo evolve sai, e quasi tutti usano lib tipo jquery, prototype , scriptaculous etc...... quindi non e' colpa delle lib, ma del tuo pc. E nn ti puoi lamentare se il mondo va avanti mentre tu resti fermo a cpu di oltre 15 anni fa. E' come chi si lamenta che su ie6 non gli vanno i siti...

    Non non sono assolutamente daccordo con te su quanto affermi dopo "e' una richiesta del cliente".
    Se il cliente dice "no jquery" ok faccio tutto a manina(ma gli costa il triplo anima te traslazioni, cross fade etc, menu etc... ) Tutte le altre tue giustificazioni sono aria fritta.

  9. #9
    Utente di HTML.it L'avatar di carlomarx
    Registrato dal
    Oct 2009
    Messaggi
    1,669
    Non amo le polemiche. Rispondo al volo…
    • L'estetica di jQuery versus quella delle funzioni native del DOM è aria fritta.
    • "Prototipizza" non ha senso, non vuol dire niente. La funzione forEach è una funzione nativa che ti offre JS e che è infilata nel prototipo di Array. Se la vuoi utilizzare devi richiamarla da lì.
    • Se vuoi puoi avere la sintassi c = $(".alternanda") senza installare jQuery: basta che scrivi var $ = document.querySelectorAll; in testa ai tuoi script (più due tre righe di crossbrowser) e il gioco è fatto.
    • Dire che jQuery sia più oop style è davvero un travisamento. L'uso di jQuery fa perdere di vista la vera natura di un linguaggio oop come js
    • Io jQuery non so nemmeno come usarlo. Eppure se vai sul Mozilla Developer Network praticamente tutti i codici di compatibilità per rendere le funzioni crossbrowser le ho scritte io. Lo faccio continuamente e modestamente penso di essere arrivato spesso a soluzioni di ottimo livello. E se mi segui un po' su questo forum credo che avrai capito che riesco a raggiungere una buona sintesi quando programmo, molto più di quella presente nel codice di jQuery.
    • Il discorso sull'ottimizzazione resta lo stesso di cui sopra.


    Ma mi fermo qua. Non voglio che si travisi quello che ho scritto. Non ho nulla contro jQuery e ognun@ è liber@ di usarlo. Il punto è che si tratta di una libreria "di retroguardia": lo scopo principale di quel codice è rendere disponibile anche ai vecchi browser le funzioni più moderne. Ma le animazioni che fai con jQuery ormai coi nuovi standard le fai praticamente coi CSS senza neppure JavaScript. Usare massicciamente jQuery rischia di renderci ignoranti sulle enormi potenzialità di HTML5.

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Originariamente inviato da carlomarx
    Non amo le polemiche.
    Sei te che polemizzi

    Originariamente inviato da carlomarx

    Rispondo al volo…
    • L'estetica di jQuery versus quella delle funzioni native del DOM è aria fritta.
    • ??? beh davvero getiscsiti te i callbacks con js antivo con
      timer = window.setTimeout(function(){} , interval ) ; e tutti callbacks dentro i callbask etc....
      sei folle se dici cosi'
      $("elemet").animate({css},time,function(){ /*mia funzione di callback*/ }) fallo in codice nativo js e dimmi se swcrivere quella marea di gestori e' piu' comodo di scrivere una normale chiamata jquery

      Originariamente inviato da carlomarx
    • "Prototipizza" non ha senso, non vuol dire niente. La funzione forEach è una funzione nativa che ti offre JS e che è infilata nel prototipo di Array. Se la vuoi utilizzare devi richiamarla da lì.
    Certo che vuole dire quacosa ossia la tecnica di protitipiazzazione e' proprio quelle che fai pure te quando devi aggiungere al volo metodi, proprieta etc... visto che js NON E' OOP!

    Originariamente inviato da carlomarx
  11. Se vuoi puoi avere la sintassi c = $(".alternanda") senza installare jQuery: basta che scrivi var $ = document.querySelectorAll; in testa ai tuoi script (più due tre righe di crossbrowser) e il gioco è fatto.
Jquery non e' solo $ e' un sacco di altre cose.

Originariamente inviato da carlomarx
  • Dire che jQuery sia più oop style è davvero un travisamento. L'uso di jQuery fa perdere di vista la vera natura di un linguaggio oop come js
  • JAVASCRIPT NON E' UN LINGUAGGIO AD OGGETI!!!!!
    Js e' un linguaggio funzionale. gli oggetti sono "travisamenti" la vera natura di javascript e' funzionale e quando lo capirete sarà un grande giorno. In js sono tutte funzioni, e lo scoping con enclosure e i callbacks, la gestione delle chiamate asicnrone etc... come fatto in js lo testimonia . Se non lo vedi mi dispiace per te ma continuerai a non capire cosa stai usando.

    Json (e' notazione OO ma sempre in contesto funzionale tanto che se noti non gestisci los coping degli attributi/metodi etc...) cmq, tale notazione e l'utilizzo massiccio che ne fanno i vari frameowrk come jquery serve appunto per rendere piu' OOP style un linguaggio che nativamente non lo e'!!!!

    in js non fai class miaClasse(){ public miaClasse(){} } etc...
    ma fai var a = function(){ } !!! NON E' OOP !!!!


    Originariamente inviato da carlomarx
  • Io jQuery non so nemmeno come usarlo. Eppure se vai sul Mozilla Developer Network praticamente tutti i codici di compatibilità per rendere le funzioni crossbrowser le ho scritte io. Lo faccio continuamente e modestamente penso di essere arrivato spesso a soluzioni di ottimo livello. E se mi segui un po' su questo forum credo che avrai capito che riesco a raggiungere una buona sintesi quando programmo, molto più di quella presente nel codice di jQuery.
  • Se non sai come usarlo allora perche' ne parli ?
    Bravo hai scritto cosa ? Reinventato la ruota ? E' sempre rotonda sai. Non ha ancora cambiato forma.

    Originariamente inviato da carlomarx
  • Il discorso sull'ottimizzazione resta lo stesso di cui sopra.
  • Comprendo la necessità di ottimizzare, ma non oltre un certo limite le tecnologie avanzano e se non puoi starci al passo cambia mestiere. Se serve un pc con potenza x per far girare qualcosa o lo hai o amen ... non poi pretendere che il mondo si fermi perche' il tuo pc non e' potente a sufficenza.
    Io sono dell'idea cmq che su questo punto il web sia sbagliato e sia sbagliato usare un l,iguaggio come js per animare delle pagine web che sono nate per essere solamente dei documenti. Serve un formato nuovo ma davvero nuovo. Che decisamente sfrutti meglio l'hw.
    Usiamo js per fare manipolare gli oggetti che vengono ri-renderizzati dai browser ... con uno spreco assurdo in termini di risorse. e un pc che fa girare battlefield3 si trova a scattare con una fotogallery.


    Originariamente inviato da carlomarx
    Ma mi fermo qua. Non voglio che si travisi quello che ho scritto. Non ho nulla contro jQuery e ognun@ è liber@ di usarlo. Il punto è che si tratta di una libreria "di retroguardia": lo scopo principale di quel codice è rendere disponibile anche ai vecchi browser le funzioni più moderne. Ma le animazioni che fai con jQuery ormai coi nuovi standard le fai praticamente coi CSS senza neppure JavaScript. Usare massicciamente jQuery rischia di renderci ignoranti sulle enormi potenzialità di HTML5.
    Certo qui sono daccorod con te, ma ricorda che quando lavori le retocompatibilità sono importanti, e purtroppo (quasi esclusivamente colpa di InternetExplorer) non potremo usare html5 tranquillamente per molto tempo. QUindi mettitela via html5 e' un flop. Lavora bene solo sul mobile che non ha ie, in ogni altro contesto o fai la doppia versione di tutto(per avere i siti che funzionano anche dai clienti) oppure ti agganci, e per questo mi girano le balle, perche' come dico a te aggiornati dovrei dirlo a mezzo mondo. Ma i clienti non lo fanno e le mie web apps devono girare da i7 in su ... e quindi che faccio ? Perdio 4 giorni soilo per fare la versione html5 e quella html4 e precedenti ????


    Per favore .....

    Pagina 1 di 2 1 2 ultimoultimo

    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 © 2024 vBulletin Solutions, Inc. All rights reserved.