我目前正在開發一個日語學習網站的個人專案。用戶的進度存盤在 localStorage 變數中。我面臨的問題是,在設定變數的值并將標題放置到不同的頁面后,localStorage 變數不會更新。如果標題被洗掉,它作業正常。任何幫助將不勝感激。請按照我的代碼片段。謝謝!
if (!in_array($id, $_SESSION['seenRight'])) {
array_push($_SESSION['seenRight'],$id);
if (count($_SESSION['seenRight']) == 10) {
?> <script>
if (typeof(Storage) !== "undefined") {
<?php
// Check if there was already a localstorage for that level, make a percentage with the new added value, replace value.
// Lock the level.
if(count($_SESSION['seenWrong']) == 0) {
?> localStorage.setItem("progressLevel" "<?php echo $_SESSION['level'] ?>", "50");<?php
}
if(count($_SESSION['seenWrong']) > 0 && count($_SESSION['seenWrong']) <= 2) {
?> localStorage.setItem("progressLevel" "<?php echo $_SESSION['level'] ?>", "40");<?php
}
if(count($_SESSION['seenWrong']) > 2 && count($_SESSION['seenWrong']) <= 4) {
?> localStorage.setItem("progressLevel" "<?php echo $_SESSION['level'] ?>", "30");<?php
}
if(count($_SESSION['seenWrong']) > 4 && count($_SESSION['seenWrong']) <= 6) {
?> localStorage.setItem("progressLevel" "<?php echo $_SESSION['level'] ?>", "20");<?php
}
if(count($_SESSION['seenWrong']) > 6 && count($_SESSION['seenWrong']) <= 8) {
?> localStorage.setItem("progressLevel" "<?php echo $_SESSION['level'] ?>", "10");<?php
}
if(count($_SESSION['seenWrong']) > 8 && count($_SESSION['seenWrong']) <= 10) {
?> localStorage.setItem("progressLevel" "<?php echo $_SESSION['level'] ?>", "0");<?php
}
unset($_SESSION['level']);
unset($_SESSION['id']);
$_SESSION['seenRight'] = array();
$_SESSION['seenWrong'] = array();
header('Location:review_menu.php'); // IF THIS IS REMOVED, IT WORKS FINE.
?>
} else {
<?php header('Location:review_menu.php'); ?>
}
</script> <?php
}
}
uj5u.com熱心網友回復:
將標題放置到不同的頁面
……你自己說的。你告訴瀏覽器轉到另一個頁面......所以這個頁面,你輸出本地存盤代碼的那個頁面,永遠不會被瀏覽器加載,所以當然 JavaScript 永遠不會執行。
如果你想做一個重定向,我建議window.location在本地存盤代碼有機會執行之后從javascript(例如使用)進行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/492923.html
標籤:javascript php mysql 本地存储
