Ciao Vindav,
ti ringrazio ancora per la tua funzione !!
Per cortesia mi potresti spiegare a livello teorico come funziona ?? Ho provato a ragionarci su' ma non riesco a comprendere bene il suo giusto funzionamento !!
Grazie ancora in anticipo !!!
Ciao Vindav,
ti ringrazio ancora per la tua funzione !!
Per cortesia mi potresti spiegare a livello teorico come funziona ?? Ho provato a ragionarci su' ma non riesco a comprendere bene il suo giusto funzionamento !!
Grazie ancora in anticipo !!!
- la lista della tua pagina html (ul->li) è una struttura dati collegata, ossia è un insieme di nodi in cui esistono dei legami fra essi.
- quella che ho scritto è una funzione ricorsiva, cioè una funzione che, all'interno della sua definizione, invoca se stessa (con argomenti diversi). Per estrapolare dati da una struttura gerarchica padre/filgio è utile utilizzare una funzione ricorsiva.
Entrando nell specifico l' operazione da effettuare è sempre le stessa, cioè quella di recuperare il testo all'interno dei tag a della struttura.
Questa operazione va effettuata per tutti i tag genitori del tag a cliccato, invece di ripetere n volte il codice per recuperare il testo contenuto in tutti tag a della catena padre/figlio posso riciclare lo stesso codice usando appunto una funzione ricorsiva.
Un esempio, se l'utente clicca su Milano, per riempire l'input text devo recuperare i testi del tag a cliccato e di tutti i suoi genitori(Lombardia e Nord).
Il primo paramentro della funzione(el) sarà quindi valorizzato con il tag a di volta in volta preso in considerazione, nel nostro caso la prima volta corrisponderà al tag a di Milano, la seconda volta con Lombardia e la terza con nord.
Ad ogni passaggio mi salvo in una variabile temporanea il testo del tag a preso in considerazione.
Quando il contenuto del tag a passato alla funzione sarà uguale ad "ITALIA" significa che sono arrivato alla radice e quindi posso valorizzare l'input text con il contenuto della variabile temporanea.
Il secondo parametro è solo una variabile booleana di appoggio che mi serve per capire se la funzione è stata richiamata da un click dell'utente o dalla funzione stessa. Vedi anche i commenti nel codice.
codice:function setInputValue(el, bool){ if(!bool) tempValue = ""; // se il parametro booleano è diverso da true svuoto la variabile che conterrà il risultato dell'operazione nodeParent = el.parentNode.parentNode.parentNode.children[0]; //recupero il genitore del tag a passato in input alla funzione /*se il testo contenuto nel tag a passato alla funzione è diverso da "italia" significa che non sono ancora arrivato alla radice della lista e continuto esaminado il tag padre altrimenti valorizzo input*/ if(el.innerHTML != "Italia"){ tempValue = el.innerHTML +"/"+tempValue; //concateno il contenuto del tag a preso in considerazione e di tutti i tag a figli setInputValue(nodeParent,true); }else{ document.getElementById("choice").value =tempValue.substring(0,tempValue.length-1); //valorizzo input rimuovendo ultimo carattere (/) } }![]()
Grazie mille Vindav,
ho letto bene i tuoi commenti che riposto in quanto la parte finale di essi con il tag code era stata tagliata ...
Ti ringrazio davvero tanto !!!!![]()
function setInputValue(el, bool){
if(!bool) tempValue = ""; // se il parametro booleano è diverso da true svuoto la variabile che conterrà il risultato dell'operazione
nodeParent = el.parentNode.parentNode.parentNode.children[0]; //recupero il genitore del tag a passato in input alla funzione
/*se il testo contenuto nel tag a passato alla funzione è diverso da "italia" significa che non sono ancora arrivato alla radice della lista e continuto esaminado il tag padre altrimenti valorizzo input*/
if(el.innerHTML != "Italia"){
tempValue = el.innerHTML +"/"+tempValue; //concateno il contenuto del tag a preso in considerazione e di tutti i tag a figli
setInputValue(nodeParent,true);
}else{
document.getElementById("choice").value =tempValue.substring(0,tempValue.length-1); //valorizzo input rimuovendo ultimo carattere (/)
}
}
![]()
Buonasera, tra le tante discussioni trovate penso che questa sia quella che come tema ci si avvicina di più.
Ho da poco pubblicato un sito (http://www.siraresort.com) e ho dei fastidiosi problemi con il menu':
- il link con sottomenu va ad attivare, in modo permanente, l'effetto hover a tutta la tendina (es. cliccando su GALLERY);
- alcune volte es. cliccando su GALLERY e successivamente su VIDEO...la pagina non risale;
- sulle altre pagine, diverse dalla home, i link del menu (ho provato http://www.siraresort.com - http://www.siraresort.com/#resort - #resort) non portano da nessuna parte;
- in modalità mobile il menu aperto va oltre la viewport e le ultime voci non si leggono.
Non ho postato codice perchè è possibile vederlo online.
Grazie mille.
Ho visitato velocemente il sito con firefox e rilevo questi errori:
Error: Permission denied to access property 'toString' https://s.ytimg.com/yts/jsbin/www-em...mbed-player.js Line 25
TypeError: Placeholders.init is not a function http://www.siraresort.com/js/main.js Line 412
o visto anche che hai due librerie jquery che oltre ad essere inutili potrebbero dare problemi
codice:<script src="http://code.jquery.com/jquery-2.0.2.min.js" type="text/javascript"> <script src="http://code.jquery.com/jquery-1.8.2.js">
Ultima modifica di cavicchiandrea; 28-01-2015 a 22:03
Cavicchi Andrea
Problemi con javascript, jquery, ajax clicca qui