2017-11-07 2 views
0

Greets, also ich versuche, jquery/javascript storage zu lernen und lief auf ein Problem, wo ich eine Navigation baue, die Sie erinnern und Sie dort platzieren sollte, wo Sie zuletzt waren, wenn Sie die Seite aktualisieren sessionStorage statt localStorage).SessionStorage Navigation

Aber ich kann nicht scheinen, um die sessionStorage-Variable an den neuen Speicherort zu ändern, noch herauszufinden, eine funktionale Möglichkeit, den Benutzer zurück auf die Seite aktualisieren.

Dies ist, was ich derzeit habe.

$(function() { 

sessionStorage.setItem('position', '.first'); 
var location = sessionStorage.getItem('position'); 

$('li', this).click(function() { 
    cls = $(this).text(); 

    if('.' + cls != location) { 

     $(location).slideToggle(400); 
     $('.' + cls).delay(400).slideToggle(400); 

      sessionStorage.setItem('position', '.' + cls) 
      console.log(location) 
    }; 
    }); 
}); 

https://jsfiddle.net/Unkn0wn96/ndj9sqpe/

Der Code in eine sehr seltsamen Art und Weise funktioniert, eher dann, wie es beabsichtigt, auch nie den Wert zu ändern, wenn ich (location) console.log.

Ich machte einige weitere Tests zu diesem Thema und fand einen 'mehr' funktionierenden Weg in dem, dass der sessionStorage zu etwas geändert hat, aber es ist nicht nützlich.

https://jsfiddle.net/Unkn0wn96/nkbtykkr/

aber noch, sie Elemente wechseln nicht, wie sie sollten, einschließlich, dass, wenn ich sessionStorage.position Konsolprotokoll es NaN zurück. Aus irgendeinem seltsamen Grund kann ich sessionStorage.position nicht innerhalb einer Variablen speichern, sondern einfach den Wert nicht ändern. Ich habe keine Ahnung, warum das passiert.

+0

Warum sollte 'location' seinen Wert ändern? '.getItem()' gibt eine Zeichenfolge oder 'null' zurück, daher ist' location' keine "magische" Verknüpfung zum Inhalt von 'sessionStorage [" position "]'. Und im Moment speichern Sie ".first" beim Laden der Seite in 'sessionStorage [" position "]', was den aktuell gespeicherten Wert überschreibt. – Andreas

+0

Wenn Sie also sagen, dass ich einen sessionStorage nicht überschreiben kann, Was wäre dann der richtige Ansatz für eine Lösung? – Unkn0wn

Antwort

0

Also war ich endlich in der Lage, mein Problem mit sessionStorage zu lösen, da es nicht viel Hilfe war, würde ich annehmen, dass die Informationen bezüglich des Falles begrenzt waren und so meine Lösung teilen möchten. Alle dachten, dass es nicht so funktioniert, wie beabsichtigt, es führt seine Hauptfunktion aus.

$(function() { 

    $('button').on('click', function() { 
    var msg = '.'+$(this).text(); 

    localStorage.setItem('color', 'blue') //Default (does not matter since the if statement does not register) 

    if(msg != '.' + localStorage.color) { // DOES NOT REGISTER 

    if(localStorage.length > 0) { 
     localStorage.removeItem('color') 
     console.log('localStorage.length : ' + localStorage.length) 
    }; 

      localStorage.setItem('color', msg) 
     console.log(localStorage.color) 
     } else { 
     console.log('cancelled') 
     } 
}); 
}); 

https://jsfiddle.net/mdqjoz69/4/

Also, was ich konnte, um endlich zu erreichen war eine Schlüssellocal ändern, was Taste Sie drücken in Bezug auf von ihm ist Wert zu machen.

Was ich nicht erreichen konnte, war in der Lage zu überprüfen, dass die gespeicherten Daten nicht ausgeführt werden, wenn Sie etwas speichern, das bereits gespeichert wurde. Es könnte eine Arbeit dafür geben. Aber da der Code seinen Hauptzweck erfüllt, lasse ich ihn gleiten.

Verwandte Themen