RISOLTO Aiuto Con Jquery E Javascript!!

joker320t

Nuovo Utente
73
1
Ciao ragazzi, ho riscontrato il seguente problema con JQuery, in poche parole devo creare un calendario e selezionando un giorno mi apre una finestra dove io mi posso prenotare per varie attività! Dove sta il problema? Allora cosi io creo i giorni del mese e gli assegno una classe ad ognuno.
Codice:
var str = "";
    for(var i = 1; i <= 31; i++){
        if(i == giorno){
            str += "<li class='active'>" + i + "</li>";
        }else{
            str += "<li class='click'>" + i + "</li>";
        }

Poi io vorrei poter cliccare sul giorno quindi ho creato questa funzione in JQuery che purtruppo però non funziona su questi nuovi elementi che ho creato dinamicamente, ma funziona solo su elementi che ho scritto io sulla pagina html.

Codice:
 $(document).ready(function(){
    $(".click").click(function(){
     alert("finally")
    });
});

Questa funzione quando clicco in teoria sull' elemento con class click dovrebbe mostrarmi una finestra di allert ma sfortunatamente non funziona, o meglio ripeto funziona solo su elementi che ho creato io sul foglio html. Spero riusciate a darmi una diritta perchè gi ho gia perso troppo tempo e sto impazzendo. Grazie mille in anticipo.
 
M

Mursey

Ospite
Per come hai scritto il codice la funzione viene eseguita solo sugli elementi che hanno classe .click, quelli che crei con classe .active non faranno niente.
 

joker320t

Nuovo Utente
73
1
Grazie per la risposta, certo lo so, però non funziona neanche su quelli con classe click?!?!
Se io per esempio creassi un div e gli aggiungo id o classe "contenitore" e nella funzione gli metto contenitore funziona tutto, ma se io gli metto click che e' una classe creata dinamicamente con js non funziona come mai??
 
Ultima modifica:
M

Mursey

Ospite
Grazie per la risposta, certo lo so, però non funziona neanche su quelli con classe click?!?!
Se io per esempio creassi un div e gli aggiungo id o classe "contenitore" e nella funzione gli metto contenitore funziona tutto, ma se io gli metto click che e' una classe creata dinamicamente con js non funziona come mai??

Dipende molto dal codice, riesci a metterlo tutto ?
O, perlomeno, lo html gia' creato e la parte javascript che crei dopo.

Potrebbe essere un problema di ordine nella creazione delle cose...
 

joker320t

Nuovo Utente
73
1
HTML:
<!DOCTYPE html>
<html>
<head>
    <title>Calendario</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <link href="css/calendario_style.css" rel="stylesheet" type="text/css">
    <script type="text/javascript" src="script/acion_calendar.js"></script>
</head>
<body>
    <p id="stampa"></p>
    <div id="calendario">
        <div class="mesi">
            <ul>
                <li class="pre">&#10094;</li>
                <li class="next">&#10095;</li>
                <li id="mese"></li>
            </ul>
        </div>
           
            <ul id="giorni_settimana">
                <li>Lun</li>
                <li>Mar</li>
                <li>Mer</li>
                <li>Gio</li>
                <li>Ven</li>
                <li>Sab</li>
                <li>Dom</li>
            </ul>   
           
            <ul id="giorni"></ul>
    </div>
</body>
</html>

JavaScript:
var mesi = [
    "gennaio",
    "febbraio",
    "marzo",
    "aprile",
    "maggio",
    "giugno",
    "luglio",
    "agosto",
    "settembre",
    "ottobre",
    "novembre",
    "dicembre"
];

var data = new Date();
var giorno = data.getUTCDate();
var mese = data.getMonth();
var anno = data.getFullYear();

window.onload = function(){
    document.getElementById("mese").innerHTML = mesi[mese] + "<br> <span style='font-size:18px;'>" + anno + "</span>"
    var str = "";
    for(var i = 1; i <= 31; i++){
        if(i == giorno){
            str += "<li class='active'>" + i + "</li>";
        }else{
            str += "<li class='click'>" + i + "</li>";
        }
    }
   
    document.getElementById("giorni").innerHTML = str;
    //document.getElementById("active").classList.add("active");
}
$(document).ready(function(){
    $(".click").click(function(){
     alert("finally")
    });
});
 
M

Mursey

Ospite
Ci sono due cose da provare :
1) il codice che e' nella window.onload, eseguito come prima cosa nella $(document).ready
2) incorporare la gestione dell'evento onClick nella str += "<li class='click'>" + i + "</li>";
 

joker320t

Nuovo Utente
73
1
Ci sono due cose da provare :
1) il codice che e' nella window.onload, eseguito come prima cosa nella $(document).ready
2) incorporare la gestione dell'evento onClick nella str += "<li class='click'>" + i + "</li>";
Grazie inanzi tutto per la risposta, sono riuscito a risolvere prima mettendo tutto dentro $(document).ready credo che il problema stava che la funzione jquery la mettevo fuori dalla funzione e quindi non riusciva a vedere gli elementi.. un altra domanda c'e un modo per capire il numero tra <li></li> quando clicco sopra o devo perforza attribuirgli ad ogni elemento l'attributo value="numero"?
 

cdtux

Utente Èlite
1,829
911
CPU
I7 3770
Scheda Madre
Asrock Z77 Extreme 4
HDD
Samsung 850 pro 250GB
RAM
Corsair Vengeance LP 16GB
GPU
Gigabyte GTX1060 6GB
Monitor
Dell U2412M
PSU
Seasonic Focus Plus 650
Case
Corsair Graphite 760T
OS
Debian / Ubuntu
con jquery puoi usare .text() o .index() (per ricavare l'indice della lista).

Qui un esempio.
 
  • Mi piace
Reazioni: joker320t

Albo89

Utente Èlite
5,872
2,456
CPU
Ryzen 5700G
Dissipatore
Deep Cool castle 360 rgb v2
Scheda Madre
Rog Strix B550-F GAMING (WI-FI)
HDD
980 1TB
RAM
Ballistix 3600mhz 8Gbx2
GPU
1080 Ti Aorus xtreme
PSU
Corsair RM750x
Grazie inanzi tutto per la risposta, sono riuscito a risolvere prima mettendo tutto dentro $(document).ready credo che il problema stava che la funzione jquery la mettevo fuori dalla funzione e quindi non riusciva a vedere gli elementi.. un altra domanda c'e un modo per capire il numero tra <li></li> quando clicco sopra o devo perforza attribuirgli ad ogni elemento l'attributo value="numero"?


il priblema di fondo era che la jQuery(document).ready viene eseguita prima della Windows.onload.
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili