Non è possibile leggere la proprietà ‘undefined’ undefined

Avere un po ‘ più in difficoltà con i Cookie, ho ricevuto il mio sito per salvare i cookie (impegni) e ricaricarli dopo che la pagina era stata caricata e posto in una tabella sullo schermo.

Ma, quando ho eliminato tutti i cookie e ha cercato di iniziare un nuovo continuo a ricevere un errore della console dicendo Cannot read property 'undefined' of undefined Ora, se io commento qui sotto le due sezioni di codice, questo problema scompare, ma il sistema di cookie avrà esito negativo naturalmente.

Questa sezione controlli per il numero di elementi che erano nella to-do-list ultima volta che qualcuno ha visitato, e imposta i come il numero, quindi nulla di ottenere eliminato.

var listCookies = document.cookie.split(";");

for(var a = 0; a < listCookies.length; a++) {

    var listCount = myCookies[i].trim().split("=");

    if(listCount[0].indexOf("listCount") === 0) {
        var i = listCount;
    } else {
        var i = 0;
    }
 }

Questa sezione rileva l’effettiva da fare a se stessi e li inserisce nella tabella sullo schermo.

var myCookies = document.cookie.split(";");

for(var b = 0; b < myCookies.length; b++) {

    var cookie = myCookies[i].trim().split("=");

    if(cookie[0].indexOf("todo-") === 0) {

        window.todoTable.insertAdjacentHTML('beforeend', decodeURIComponent(cookie[1]));
    }
}

Ho capito il problema è che non ci sono i cookie salvati sul someones prima visita, ma quando ho provato ad aggiungere un if (typeof document.cookie === "undefined") dichiarazione che non sembrano fare nulla.

Sto assumendo che ho bisogno di un’istruzione if avvolto intorno a questi pezzi di codice giusto? Per dire, se non c’è un “cookie” salta po’. Se c’è, ‘fare cose’.

  • Nella prima sezione, ti sembra di essere riferimento io e myCookies variabili, prima ancora che fosse impostato. E ‘ giusto? var listCount = myCookies[i].trim().split(“=”);
  • È possibile controllare la linea che ha causato l’errore?
  • Dovrebbe essere if (typeof( document.cookie) === "undefined").
  • myCookies non è definito, e i non è ancora stato definito, in modo myCookies[i] chiede undefined su undefined.
  • Perché avete bisogno di la prima sezione? Che cosa si intende per “nulla viene cancellato” ?
  • Io sto facendo una to-do-list del sito, e le cose da fare sono numerati i cookie, se qualcuno dovesse tornare indietro e aggiungere un altro si inizia a 0 di nuovo, in modo da eliminare la loro prima cookie. Avevo bisogno di un modo per tenere traccia del numero di elementi nella lista 🙂

InformationsquelleAutor lukeseager | 2013-01-09

 

One Reply
  1. 1

    i deve essere globale, l’ho fatto totalCount.

    La prima sezione dovrebbe essere:

    var totalCount = 0;
    
    var listCookies = document.cookie.split(";");
    
    for(var a = 0; a < listCookies.length; a++) {
    
        var listCount = listCookies[a].trim().split("=");
    
        if(listCount[0].indexOf("listCount") === 0) {
            totalCount = listCount[1];
            break;
        }
     }

    Seconda sezione dovrebbe essere:

    var myCookies = document.cookie.split(";");
    
    for(var b = 0; b < myCookies.length; b++) {
    
        var cookie = myCookies[b].trim().split("=");
    
        if(cookie[0].indexOf("todo-") === 0) {
    
            window.todoTable.insertAdjacentHTML('beforeend', decodeURIComponent(cookie[1]));
        }
    }
    • Incredibile, sto errore di connessione! Grazie uomo 🙂
    • Il codice potrebbe essere privo di errori ma non è che funziona come ci si aspetta?
    • Yep! Grazie mille 🙂 la Mia unica altra cosa da capire è come ricordare se una casella di controllo è selezionata o meno lol.
    • È possibile mantenere una stringa binaria, ogni bit per ogni casella di controllo.

Lascia un commento