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

    piccolo switch che non va

    Ciao a tutti,
    qualcuno mi sa dire perchè non mi funziona questa switch?
    codice:
    <script>
    var indirizzo = window.location.href;
    switch(indirizzo) {
    case "indirizzo.indexOf("miaparola")!=-1":
    document.write('funziona');
    break;
    default:
    document.write('non funziona');
    break;
    }
    </script>
    What is the |\/|atrix?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Questo si aspetta che nella varibile indirizzo ci sia la stringa "indirizzo.indexOf("miaparola")!=-1" (scritta esattamente cosi`).

    ma forse tu intendevi una cosa di questo tipo:
    switch (indirizzo.indexOf("miaparola")) {
    case -1:
    document.write('non funziona');
    break;
    default:
    document.write('funziona');
    break;
    }

    Che io riscriverei diversamente:
    if(indirizzo.indexOf("miaparola") != -1) { document.write('funziona');
    } else {
    document.write('non funziona');
    }

    O ancora:
    if(indirizzo.match(/miaparola/)) {
    document.write('non funziona');
    } else {
    document.write('funziona');
    }

    Spero di non aver fatto confusione sul valore degli if.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    No, io ho fatto l'esempio con un solo case... ma ce ne sono di più.. per questo ho usato lo switch..
    What is the |\/|atrix?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Comunque la tua sintassi e` errata. Non si puo` inserire una funzione o metodo in un case. E neppure un confronto: lo switch e` gia` un confronto.
    Il case deve contenere una costante (neppure una varibile e` ammessa).

    Forse c'e` qualche altro metodo "furbo" e compatto per fare la stessa cosa: prova a descrivere il problema completo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Devo fare in modod che se sulla barra degli indirizzi c'è la parola "parola1" sul documento venga scritto "testo 1", se sulla barra degli indirizzi c'è la parola "parola2" sul documento venga scritto "testo 2", se sulla barra degli indirizzi c'è la parola "parola3" sul documento venga scritto "testo 3"...
    Tutto qui.
    What is the |\/|atrix?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Chiaramente puoi risolvere con una serie di if ... else if ... else ... testando inexOf().
    Ma questa e` la soluzione "ovvia".

    Vorrei pensare ad una soluzione "bella":
    I vari parola1, parola2, parola3, .. stanno sempre nella stessa posizione? c'e` una regola (da implementare con le RegExp o con altri sistemi) per estrarli?

    Di solito nella location si puo` estrarre la querystring con location.search(), e separare i vari pezzi con .split("&") e poi con .split("=").
    Quindi potrebbe essere un oggetto del tipo:

    switch(document.location.search.substr(1).split("& ")[XX].split("=")[0|1]) {

    case 'parola1' :
    ...
    case 'parola2' :
    ...
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    si, I vari parola1, parola2, parola3 stanno nella stessa posizione
    What is the |\/|atrix?

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La parte "teorica" (si fa per dire) te l'ho gia` spiegata. Se abbisogni anche della pratica devi postare qualcosa di piu`.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    What is the |\/|atrix?

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Originariamente inviato da |\/|atrix
    Che manca L'url?
    http://www.miosito.it/cartella/carte...ella3/test.php
    Ok allora avevo interpretato diversamente (credevo fosse unpezzo della querystring).

    switch(document.location.href.split(/[\\\/]/)[5]) {
    case 'parola1':
    alert("caso parola 1");
    break;
    case 'parola2':
    alert("caso parola 2");
    break;
    default:
    alert("errore da qualche parte - fatto confronto con "+document.location.href.split(/[\\\/]/)[5]);
    break;
    }

    Attenzione alle backslash: nella regexp ce ne sono tre
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.