2016-04-26 10 views
-1

Ich versuche, verschiedene Werte aus einem HTML-Formular in sessionStorage zu speichern, aber mit dem folgenden Code erhalte ich die "storeInfo Start" Warnung, aber nicht "StoreInfo End", also nehme ich an, es ist ein Fehler/Bug mit dem SessionStorage-Code.Javascript sessionStorage Variable nicht korrekt speichern

Ich habe anderen Code entfernt, aber dieses Beispiel funktioniert immer noch nicht für mich, ich benutze Firefox 45.0.2 wenn das relevant ist, aber ich habe sessionStorage zuvor mit diesem Browser und ähnlichem Code verwendet, dass ich den Unterschied nicht finden kann/s zwischen.

function validate() { 
    alert("Validate"); 
    storeInfo(); 
} 

function storeInfo() { 
    alert("storeInfo Start"); 

    sessionStorage.firstName = document.getElementById("firstName").value; 

    alert("StoreInfo End - First Name is: " + sessionStorage.firstName); 

} 

function init() { 
    alert("Init Works!"); 

    // For apply page 
    if (document.getElementById("applyForm") != null) { 
     var applyForm = document.getElementById("applyForm"); 
     applyForm.onsubmit = validate; 
    } 
} 

window.onload = init; 

Die aus der HTML-Datei:

<form id="applyForm"> 
    <p> 
     <label for="firstName">First Name</label> 
     <input type="text" name="firstName" id="firstName" pattern="^[a-zA-Z]+$" maxlength="25" size="25" required="required" value="ThisIsMyName" /> 
    </p> 
    <input type="submit" /> 
</form> 
+0

sessionstorage auf diese Weise funktioniert, sollte der Fehler woanders – krampstudio

+0

'document.getElementById („firstname“) sein' null zurückkommen hat, oder Sie würde die zweite Alarm – dandavis

+2

Sie sehen müssen, hast du deine Konsole überprüft? Es kann dieselbe Herkunftsrichtlinie sein, wenn Ihre Formularaktion auf eine andere Domäne ausgerichtet ist. Sie sollten so etwas in Ihrer Konsole sehen. > Uncaught SecurityError: Fehler beim Lesen der "sessionStorage" -Eigenschaft > von "Window": Das Dokument ist Sandkasten und es fehlt das Flag > 'allow-same-origin'. – kolunar

Antwort

0

Wo Sie diese Art von API aufmerksam geworden?

Verwendung:

sessionStorage.setItem('firstName', document.getElementById("firstName").value;); 

... und später sessionStorage.getItem('firstName');

+1

Ich habe gezeigt, dass ich dieses Format in meinen Vortragsfolien von uni verwende, obwohl dies ein besserer Weg zu sein scheint, außer wenn ich dies stattdessen benutze, habe ich immer noch das gleiche Problem. – Twulz

+0

imho sessionStorage ist ein Objekt, keine API. Warum verwenden wir methodischen Zugriff (mit Anführungszeichen, 11 zusätzlichen Zeichen und Paren-Balancing), den wir nicht für andere Objekte verwenden? die Verwendung beschreibender Namen verhindert Konflikte bei den wenigen "reservierten" Schlüsseln, und Programmierer, die diese Methoden immer verwenden, erkennen oft nicht, dass 'JSON.stringify (sessionStorage)' und 'Object.keys (sessionStorage)' gut funktionieren und 'Objekt ergänzen. assign() 'um Chargen zusammenzufassen. aber ich schweife ab .. – dandavis

-1

Mai werden Sie local versuchen können, wie folgt aus:

if(localStorage.getItem('firstName')){ 
     firstName=localStorage.getItem('firstName'); 
    } 
localStorage.setItem('firstName',document.getElementById("firstName").value;); 
+1

Danke, ich habe versucht, localStorage stattdessen zu verwenden, und ich habe immer noch das gleiche Problem, obwohl ich lieber sessionStorage für diese bestimmte Anwendung verwenden würde, so dass es nicht zwischen Sitzungen gespeichert wird. – Twulz

0

Ich musste einige html zum Snippet hinzufügen, aber wenn ich es auf die Geige stelle, funktioniert es.

<form id="applyForm"> 
    <p> 
     <label for="firstName">First Name</label> 
     <input type="text" name="firstName" id="firstName" pattern="^[a-zA-Z]+$" maxlength="25" size="25" required="required" value="ThisIsMyName" /> 
    </p> 
    <input type="submit" /> 
</form> 

dieser fiddle Werke

+0

Entschuldigung, ich habe vergessen, dass andere HTML-Tags auch wichtig waren, um sie zu kopieren. Ich bin mir nicht sicher, was der Unterschied ist, aber ich kann es immer noch nicht so funktionieren – Twulz

+0

sogar mit einer rohen Kopie von der Geige auf Ihrem PC? – rick

+0

Ja, auch nur mit diesem Formular in seiner eigenen HTML-Datei mit '' etc. Tags und nichts anderes, ich kann nicht die zweite "StoreInfo End ..." – Twulz

Verwandte Themen