我在頁面上有一些圖像,當點擊其中一個圖像時,POST數據被髮送,頁面刷新並且Javascript變量增加。我的問題是如何獲得JS變量不重置爲我重新加載頁面時啓動它的值?我之前也曾嘗試使用localstorage
保存變量,但該變量仍然重置 - 這是合乎邏輯的,因爲我在同一文檔中進行了初始化,但我不知道該如何做。如何避免在頁面刷新時重置Javascript變量?
我是Javascript新手,希望儘可能簡單(如果可能,請獲得一個虛擬答覆)。
下面是我的代碼,用相應的JavaScript在身體的開始(也有單獨的文件中一些無關痛癢的PHP):
<?php
$subtest_nr = "7";
$counter = 0;
require_once('php.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" href="styles.css">
<script src="jquery-3.1.1.min.js"></script>
<script src="scripts.js"></script>
</head>
<body>
<script>
var counter = 0;
$(document).ready(function(){
$("img").click(function(){
counter += 4;
$("#test").text(counter); //for testing
});
$("#test").text(counter); //for testing
});
jQuery(function($) {
// Hide/suppress the submit button
$('input[type="submit"]').closest('div').hide();
// Bind to change event for all radio buttons
$('input[type="radio"]').on('change', function() {
// Submit the form ("this" refers to the radio button)
$(this).closest('form').submit();
});
});
</script>
<div class="main">
<div id="test"></div>
<?php $data = getData($subtest_nr); ?>
<form id="myform" method="post">
<div class="four_images">
<div class="flex-item">
<input type="radio" name="image" value="7.11" id="alt1" class="hidden">
<label for="alt1"><img src="images/<?php echo $data[$counter+0]; ?>"></label>
</div>
<div class="flex-item">
<input type="radio" name="image" value="7.12" id="alt2" class="hidden">
<label for="alt2"><img src="images/<?php echo $data[$counter + 1]; ?>"></label>
</div>
<div class="flex-item">
<input type="radio" name="image" value="7.13" id="alt3" class="hidden">
<label for="alt3"><img src="images/<?php echo $data[$counter+2]; ?>"></label>
</div>
<div class="flex-item">
<input type="radio" name="image" value="7.14" id="alt4" class="hidden">
<label for="alt4"><img src="images/<?php echo $data[$counter+3]; ?>"></label>
</div>
<div>
<input type="submit" name="save" value="Save Image Selection">
</div>
</div>
</form>
</div>
</body>
</html>
我可以補充一點,我想保持頁面刷新因爲後來我想將遞增的變量傳遞給php,而不必使用Ajax或類似的方式發佈它。 (希望這會讓初學者更簡單。)
您需要使用localStorage的持有價值,當頁面初始化或者甚至更好,你讀它,有PHP持有的價值,並將其寫入到頁面 – epascarello
您使用'localStorage'在正確的軌道上,所有你需要做的就是檢查它在初始化之前是否存在它的起始值,所以它不會被重置。您也可以在PHP中使用會話。 –
@SpencerWieczorek啊,當然!謝謝!會試試這個。 – Ingrid