我不明白为什么Firefox在第31行中给我错误,说elencouser(我在代码顶部声明)为null,请帮忙,谢谢
var elencouser = [];
var array;
$(document).ready(function(){
if (typeof(Storage) !== "undefined") {
if(sessionStorage.getItem("arrayuser") == "undefined"){
elencouser[0] = new utente("admin","admin","Danilo","Cerasi");
array = JSON.stringify(elencouser);
sessionStorage.setItem("arrayuser",array);
}
$("#registrati").click(function(){
array = sessionStorage.getItem("arrayuser");
elencouser = $.parseJSON(array);
var email=$("#exampleInputEmail").val(); //prendo quello che ha scritto l'utente
var password=$("#exampleInputPassword").val();
var nome=$("#exampleFirstName").val();
var cognome=$("#exampleLastName").val();
elencouser.push( new utente(email,password,nome,cognome) );
alert("sei appena stato registrato! Ora verrai reindirizzato alla pagina di login..");
location.href="login.html";
});
}else{
alert("riscontriamo problemi di apertura con il browser che stai utilizzando, aggiornalo oppure prova con uno doverso"); //se il browser non supporta il il session storage glielo dico
}
});
答案 0 :(得分:3)
未定义的检查应使用typeof
来检查"undefined"
即
if(typeof sessionStorage.getItem("arrayuser") == "undefined"){
请注意,arrayuser
可能由于各种原因(通过用户手动编辑或通过旧版代码)仍包含不同的数据。
因此,我总是假设从本地/会话存储中获取arrayuser
时,您可能无法获得有效的数组。
在您的点击事件中,我还将检查arrayuser
是否有效以及它是否为数组:
try {
const arrayuser = sessionStorage.getItem("arrayuser");
elencouser = JSON.parse(arrayuser);
if(!Array.isArray(elencouser)) throw "arrayuser was not a valid array";
} catch(e) {
console.error(e);
elencouser = [];
}