"undefined" 会话存储中的元素有问题
"undefined" problem with element on session storage
请多多关照,我是未来的小开发者
我正在创建一个(假的)网站来预订图卢兹(法国)的自行车。我想在会话存储中保存用户选择的自行车站点的名称,因为我需要在自行车预订后显示它。
问题: devaux API 的自行车站名称 return 没问题。我显示它#station-name。我将它保存在会话存储中。但是当我尝试在 -> undefined
之后收集它时
姓名和名字一切正常(保存在本地存储中)。
你能帮帮我吗?
https://github.com/ldoba/project-03
HTML
<div class="row">
<form class="form-group col-sm-12 col-md-6" id="booking-info">
<div class="form-info" id ='form-info'>
<label for="name">Nom</label>
<input type="text" id="name" class="form-control" onkeyup='javascript:isCharSet()'>
<label for="forename">Prénom</label>
<input type="text" id="forename" class="form-control" onkeyup='javascript:isCharSet()'>
</div>
<button href="#modal1" class="btn-dark js-modal btn-reservation" id="btn-booking">Réserver</button>
</form>
</div>
<aside id="modal1" class="modal" aria-hidden="true" role="dialog" aria-labelledby="titlemodal" style="display: none;">
<div class="modal1-wrapper js-modal-stop">
<button class="btn btn-dark js-modal-close row col-md-2 float-right">Fermer</button>
<h2 class="row col-md-10" id="titlemodal">Veuillez signer puis cliquer sur "Confirmer la réservation"</h2>
<canvas id="canvas"></canvas>
<button type="button" class="btn btn-light" id="reset">Clear</button>
<button type="button" class="btn btn-success justify-content-md-center row col-md-6 js-modal-close" id="canvasbtn">Confirmer la réservation</button>
</div>
</aside>
</section>
表单的 JS 部分 ->
//création des constantes nécessaires
const stationName = document.getElementById('station-name');
const inputName = document.getElementById('name');
const inputForename = document.getElementById('forename');
const btnBooking = document.getElementById('btn-booking');
const btnSubmit = document.getElementById('canvasbtn');
const afterBookingInfos = document.querySelector('.afterBookingInfos');
// desactive le bouton quand le javascript se charge
btnBooking.disabled = true;
// fonction appelee des qu'une touche est enfoncee
function isCharSet() {
// on verifie si le champ n'est pas vide alors on desactive le bouton sinon on l'active
if (inputName.value != "" && inputForename.value != "") {
btnBooking.disabled = false;
} else {
btnBooking.disabled = true;
}
}
// exécuter la fonction quand le bouton 'Confirmer la réservation' est cliqué
canvasbtn.addEventListener('click', function() {
// stocker le nom et prénom entrés dans le web storage
sessionStorage.setItem('station-name', stationName.value);
localStorage.setItem('name', inputName.value);
localStorage.setItem('forename', inputForename.value);
// exécuter nameDisplayCheck()
nameDisplayCheck();
});
// définit la fonction nameDisplayCheck()
function nameDisplayCheck() {
// vérifie si les éléments 'name' et 'forename' sont stockés dans le web storage
if(localStorage.getItem('name') && localStorage.getItem('forename') && sessionStorage.getItem('station-name')) {
// Si c'est le cas, affiche un message personnalisé
let stationNom = sessionStorage.getItem('station-name');
let name = localStorage.getItem('name');
let forename = localStorage.getItem('forename');
afterBookingInfos.textContent = 'Vélo réservé à la station ' + stationNom + ' par ' + name + ' ' + forename + ' ' + 'Temps restant : ';
} else {
// Sinon, affiche une info générique
afterBookingInfos.textContent = 'Pas de réservation en cours';
}
}
document.body.onload = nameDisplayCheck;
您正在将项目设置为会话存储,而您正试图从 localStorage 获取它。这就是为什么使用 localStorage 或 sessionStorage
let stationNom = localStorage.getItem('station-name');
改为
let stationNom = sessionStorage.getItem('station-name');
if(localStorage.getItem('name') && localStorage.getItem('forename') && sessionStorage.getItem('station-name')) {
let stationNom = localStorage.getItem('station-name');
let name = localStorage.getItem('name');
let forename = localStorage.getItem('forename');
}
如果你在 sessionStorage 中查找;
let stationNom = localStorage.getItem('station-name');
在本地
我已经查看了您的代码。问题是这一行 https://github.com/ldoba/project-03/blob/master/js/form.js#L23
sessionStorage.setItem('station-name', stationName.value);
这应该是 textContent,因为您正在从 span
标签
中获取值
sessionStorage.setItem('station-name', stationName.textContent);
console.log() 相同
https://github.com/ldoba/project-03/blob/master/js/form.js#L26
我也会建议改
canvasbtn.addEventListener('click', function() {
到
btnSubmit.addEventListener('click', function() {
因为您正在 form.js 文件上创建一个变量。 https://github.com/ldoba/project-03/blob/master/js/form.js#L6
请多多关照,我是未来的小开发者
我正在创建一个(假的)网站来预订图卢兹(法国)的自行车。我想在会话存储中保存用户选择的自行车站点的名称,因为我需要在自行车预订后显示它。
问题: devaux API 的自行车站名称 return 没问题。我显示它#station-name。我将它保存在会话存储中。但是当我尝试在 -> undefined
之后收集它时姓名和名字一切正常(保存在本地存储中)。
你能帮帮我吗?
https://github.com/ldoba/project-03
HTML
<div class="row">
<form class="form-group col-sm-12 col-md-6" id="booking-info">
<div class="form-info" id ='form-info'>
<label for="name">Nom</label>
<input type="text" id="name" class="form-control" onkeyup='javascript:isCharSet()'>
<label for="forename">Prénom</label>
<input type="text" id="forename" class="form-control" onkeyup='javascript:isCharSet()'>
</div>
<button href="#modal1" class="btn-dark js-modal btn-reservation" id="btn-booking">Réserver</button>
</form>
</div>
<aside id="modal1" class="modal" aria-hidden="true" role="dialog" aria-labelledby="titlemodal" style="display: none;">
<div class="modal1-wrapper js-modal-stop">
<button class="btn btn-dark js-modal-close row col-md-2 float-right">Fermer</button>
<h2 class="row col-md-10" id="titlemodal">Veuillez signer puis cliquer sur "Confirmer la réservation"</h2>
<canvas id="canvas"></canvas>
<button type="button" class="btn btn-light" id="reset">Clear</button>
<button type="button" class="btn btn-success justify-content-md-center row col-md-6 js-modal-close" id="canvasbtn">Confirmer la réservation</button>
</div>
</aside>
</section>
表单的 JS 部分 ->
//création des constantes nécessaires
const stationName = document.getElementById('station-name');
const inputName = document.getElementById('name');
const inputForename = document.getElementById('forename');
const btnBooking = document.getElementById('btn-booking');
const btnSubmit = document.getElementById('canvasbtn');
const afterBookingInfos = document.querySelector('.afterBookingInfos');
// desactive le bouton quand le javascript se charge
btnBooking.disabled = true;
// fonction appelee des qu'une touche est enfoncee
function isCharSet() {
// on verifie si le champ n'est pas vide alors on desactive le bouton sinon on l'active
if (inputName.value != "" && inputForename.value != "") {
btnBooking.disabled = false;
} else {
btnBooking.disabled = true;
}
}
// exécuter la fonction quand le bouton 'Confirmer la réservation' est cliqué
canvasbtn.addEventListener('click', function() {
// stocker le nom et prénom entrés dans le web storage
sessionStorage.setItem('station-name', stationName.value);
localStorage.setItem('name', inputName.value);
localStorage.setItem('forename', inputForename.value);
// exécuter nameDisplayCheck()
nameDisplayCheck();
});
// définit la fonction nameDisplayCheck()
function nameDisplayCheck() {
// vérifie si les éléments 'name' et 'forename' sont stockés dans le web storage
if(localStorage.getItem('name') && localStorage.getItem('forename') && sessionStorage.getItem('station-name')) {
// Si c'est le cas, affiche un message personnalisé
let stationNom = sessionStorage.getItem('station-name');
let name = localStorage.getItem('name');
let forename = localStorage.getItem('forename');
afterBookingInfos.textContent = 'Vélo réservé à la station ' + stationNom + ' par ' + name + ' ' + forename + ' ' + 'Temps restant : ';
} else {
// Sinon, affiche une info générique
afterBookingInfos.textContent = 'Pas de réservation en cours';
}
}
document.body.onload = nameDisplayCheck;
您正在将项目设置为会话存储,而您正试图从 localStorage 获取它。这就是为什么使用 localStorage 或 sessionStorage
let stationNom = localStorage.getItem('station-name');
改为
let stationNom = sessionStorage.getItem('station-name');
if(localStorage.getItem('name') && localStorage.getItem('forename') && sessionStorage.getItem('station-name')) {
let stationNom = localStorage.getItem('station-name');
let name = localStorage.getItem('name');
let forename = localStorage.getItem('forename');
}
如果你在 sessionStorage 中查找;
let stationNom = localStorage.getItem('station-name');
在本地
我已经查看了您的代码。问题是这一行 https://github.com/ldoba/project-03/blob/master/js/form.js#L23
sessionStorage.setItem('station-name', stationName.value);
这应该是 textContent,因为您正在从 span
标签
sessionStorage.setItem('station-name', stationName.textContent);
console.log() 相同 https://github.com/ldoba/project-03/blob/master/js/form.js#L26
我也会建议改
canvasbtn.addEventListener('click', function() {
到
btnSubmit.addEventListener('click', function() {
因为您正在 form.js 文件上创建一个变量。 https://github.com/ldoba/project-03/blob/master/js/form.js#L6