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

    Script uguali su id diversi con 1 click

    Scusate, nella mia pagina ho diversi link che eseguono da 1 a 4 script uguali su id diversi, in questo caso 'div', e chiedevo qual'era la sintassi per ottimizzarli. Purtroppo sono alle prime armi, ho provato diversi sitemi, ho cercato ma non riesco a trovare la info.

    Questo il codice tipo.

    codice:
    <a href="javascript:agisci('id1'); javascript:agisci('id2'); javascript:agisci('idn');">
    Click</a>
    Come li posso sintetizzare?
    1 o 0, questo è il problema.

  2. #2

    per favore

    Ho usato lo strumento lente per la ricerca di risposte già esistenti, ma non ho trovato.
    C'è qualche anima pia che può aiutarmi?
    1 o 0, questo è il problema.

  3. #3
    puoi fare cos&igrave;:

    Fai una funzione chiamaAgisci

    codice:
    function chiamaAgisci() {
        var i;
        for (i=0;i<arguments.length;i++) { 
                agisci(arguments[i]);
        }
    }
    e la chiami cos&igrave;:
    codice:
    <a href="java-script:chiamaAgisci('id1','id2','idn');">
    Click</a>
    Va da s&egrave; che sarebbe pi&ugrave; semplice modificare la funzione agisci!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  4. #4
    Grazie mille.

    Tieni conto che per me è quasi ancora 'arabo', sono ancora fermo al Basic.
    Hai ragione, conviene modificare la funzione e te la riporto, non è mia.

    codice:
    function agisci(item) {
       elem=document.getElementById(item);
       visibile=(elem.style.visibility!="hidden")
       prefisso=document.getElementById("menu" + item);
       if (visibile) {
         elem.style.visibility="hidden";
       } else {
          elem.style.visibility="visible";
       }
    }
    provo a modificare 'agisci', correggetemi vi prego.

    codice:
    function agisci(item) {
     
    var i;
        for (i=0;i<arguments.length;i++) {
    
        elem=document.getElementById(item);
        visibile=(elem.style.visibility!="hidden")
        prefisso=document.getElementById("menu" + item);
    
        if (visibile) {
         elem.style.visibility="hidden";
        } else {
          elem.style.visibility="visible";
        }
        }
    }
    E' giusta? (sicuramente c'è almeno 1 errore)

    :master: Ma quello da applicare è comunque un processo 'macchinoso' FOR-NEXT. Quindi javascript non applica l'azione agli elementi specificati se in numero superiore a 1.
    1 o 0, questo è il problema.

  5. #5
    codice:
    function agisci() {
        var i;
        for (i=0;i<arguments.length;i++) {
            elem=document.getElementById(arguments[i]);
            visibile=(elem.style.visibility!="hidden")
            prefisso=document.getElementById("menu" + item);
    
            if (visibile) {
             elem.style.visibility="hidden";
            } else {
              elem.style.visibility="visible";
            }
        }
    }
    Mi chiedevo, comunque, la variabile prefisso a cosa serve, visto che non viene usata?

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  6. #6

    Hai ragione...

    Sto imparando cose nuove, grazie.

    Difatti, lo script originale, che ho troncato quindi senza 'modificarlo', era questo (anche se ho tolto la funzione 'chiudi tutto')


    codice:
    function agisci(item) {
       elem=document.getElementById(item);
       visibile=(elem.style.display!="none")
       prefisso=document.getElementById("menu" + item);
       if (visibile) {
         elem.style.display="none"; 
         prefisso.innerHTML="[img]off.jpg[/img]";
       } else {
          elem.style.display="block";
          prefisso.innerHTML="[img]on.jpg[/img]";
       }
    }
    In sostanza, non conoscendo Javascript ho dovuto smanettare per risolvere, anche se con l'errore che mi evidenzi, un problema.

    Nel sito devo gestire diversi div, a volte con display e altre con visibility, e in entrambi i casi a volte ho necessità di usare l'item, quindi il prefisso, e quindi devo sia agire sullo stato dei div che contemporaneamente modificare l'immagine che me ne mostra l'assetto (on/off), e sia agire sullo stato dei div senza mostrarne l'assetto (senza item).
    Quindi, non sapendo come creare uno script ad hoc, oltre a dover avere due funzioni separate (display e visibility), a seconda dei casi per ognuna ne ho dovuto creare una copia (quella che ti ho riportato in precedenza) senza l'immagine di assetto (on/off).
    In più quando è presente l'immagine, quindi il prefisso, ho pure la necessità di gestire immagini diverse a seconda del tipo di div che devo gestire.
    Perciò attualmente, invece di avere 2 funzioni che, a seconda che si tratti di display piuttosto che di visibility, gestiscono le diverse situazioni (con immagini diverse di on/off, o senza immagini), di funzioni ne ho ben 5.

    Sostanzialmente il link che mi attiva la modifica dello stato del div e dell'immagine-assetto, funziona così:

    codice:
    <a id="menuitem" href="Javascript:agisci('item');">
    [img]off.jpg[/img]</a>
    
    <div id="item" style="display:none;">Contenuto</div>
    Se invece non ho bisogno dell'immagine-assetto (on/off), posso utilizzare, considerando che spesso devo agire su div diversi, e quindi id diversi, quella che mi hai suggerito tu. E qui mi hai risolto il problema.

    Percio', domanda finale, come faccio adesso, ad avere, ad esempio per gestire il display , la stessa funzione che contemporaneamente al div mi gestisce l'immagine-assetto se è presente, che però me la gestisce se è diversa da caso a caso, quindi con nome e formato diversi, e che mi gestisce anche solo il div nel momento in cui non esiste l'immagine-assetto, senza crearmi risultati ai confini della realtà?
    E' possibile raggruppare il tutto?
    1 o 0, questo è il problema.

  7. #7

    Esempio pratico

    senza id multipli.

    codice:
    apri/chiudi 1
    <div id="item1" style="display:none;">
    
    	<a id="menuitem2" href="Javascript:agisci('item2');">
    	[img]off.jpg[/img]</a>
    	<div id="item2" style="display:none;">Contenuto Item2</div> 
    
    	<a id="menuitem3" href="Javascript:agisci('item3');">
    	[img]off2.jpg[/img]</a>
    	<div id="item3" style="display:none;">Contenuto Item3</div>
    
    </div>
    1 o 0, questo è il problema.

  8. #8

    Ti prego ti prego, mi sto impegnando

    Ho risolto tutto, logicamente, ma ho bisogno un secondo di un piccolo aiuto, per piacere.

    Devo rimettere momentaneamente (item)

    Se non erro, con la funzione che segue gestisco sia display che visibility.

    codice:
    	function agisci(item) {
    	elem=document.getElementById(item);
    	visibile=(elem.style.display!="none")
    	volume=(elem.style.visibility!="hidden")
    	prefisso=document.getElementById("menu" + item); 
    
    	if (visibile) { 
    
    	elem.style.display="none"; 
    	prefisso.innerHTML="
    [img]name1off.jpg[/img]"; 
    	} else { 
    	elem.style.display="block";
    	prefisso.innerHTML="
    [img]name1on.jpg[/img]";
    	} 
    
    	if (volume) {
    	elem.style.visibility="hidden";
    	prefisso.innerHTML="
    [img]name2off.jpg[/img]";
    	} else {
    	elem.style.visibility="visible";
    	prefisso.innerHTML="
    [img]name2on.jpg[/img]";
       }
    }
    Dovrei quindi, successivamente, indirizzare lo script sulle immagini che voglio, semplicemente, senza specificare le dimensioni (non lo so fare e non lo chiedo altrimenti non mi si risponde, dovrebbe funzionare ugualmente), componendo il nome con
    item + off.ipg
    e item + on.ipg

    Come faccio a comporre il nome di quell'immagine nello script?

    Così?
    codice:
    prefisso.innerHTML="<img src=(item + 'on.jpg') hspace='0' vspace='0' border='0'>";
    Immagino sia sbagliato ma non so come dimostrare che mi sto impegnando. :-)

    Grazie.
    1 o 0, questo è il problema.

  9. #9
    codice:
    prefisso.innerHTML="<img src='" + item + "on.jpg' hspace='0' vspace='0' border='0'>";
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  10. #10
    Ti voglio bene, grazie.
    1 o 0, questo è il problema.

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.