如何在页面刷新时保留 javascript 数组
How to retain javascript array while page refresh?
PHP 文件
<input type="text" id="txtMyText">
<button type="button" id="myButton" onclick="addItemToArray()">Add to Array</button>
Javascript 文件
var myArray = []
function addItemToArray()
{
myArray.push(document.getElementById("txtMyText").value);
}
每当我在文本字段中输入一些值并点击按钮时,值都会存储在数组中。刷新页面时,我的数组变为空。我想保留它的元素,直到我手动删除它们。如何留住他们?我应该将数组放在 PHP 会话还是隐藏字段中?如果是,那怎么做?
为此使用localStorage
API,使用setItem()
方法并在存储到localStorage
之前将数组字符串化。您可以通过getItem()
检索存储的项目,并使用 JSON.parse()
解析存储的数组,类似于
if(localStorage.getItem('textValues') == null){
var myArray =[];
}else{
myArray = JSON.parse(localStorage.getItem('textValues'));
//-----------^parse the item by getting---^--stored item
}
function addItemToArray(){
myArray.push(document.getElementById("txtMyText").value);
localStorage.setItem('textValues', JSON.stringify(myArray));
//------------^store the item by stringify--^
}
演示
您可以使用浏览器的内部存储: https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage
存储阵列:
sessionStorage.setItem("items", JSON.stringify(items));
从存储中获取阵列:
var items = JSON.parse(sessionStorage.getItem("items"));
要在刷新时保留它,您需要存储在本地存储中。 localStorage.setItem("storageName", myArray)
然后localStorage.getItem("storageName")
或var myArray = localStorage.getItem("storageName")
检索它
如果你想使用PHP会话,我会利用AJAX。您需要创建一个文件,以便在创建数组时对其进行处理。下面是一个简单的示例。
您的第一页
<?php
//start the PHP session to save your array in
session_start();
?>
<script type="text/javascript">
var myArray = [];
<?php
if(isset($_SESSION['myArray'])) {
foreach($_SESSION['myArray'] as $item){
// prepopulate the session array from PHP
echo "myArray[] = ".$item.";";
}
}
?>
function addItemToArray(){
var addvalue = document.getElementById("txtMyText").value;
myArray.push(addvalue);
if (window.XMLHttpRequest){ var xmlhttp=new XMLHttpRequest(); }else { var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("myDiv").innerHTML += xmlhttp.responseText .", ";
}
}
xmlhttp.open("GET","save_array.php?newValue="+,true);
xmlhttp.send();
}
</script>
<div id="show_my_array">
<?php
//show array saved from last time
if(isset($_SESSION['myArray'])) {
foreach($_SESSION['myArray'] as $item){
// prepopulate the session array from PHP
echo $item.", ";
}
}
?>
</div>
<input type="text" id="txtMyText">
<button type="button" id="myButton" onclick="addItemToArray()">Add to Array</button>
save_array.php
<?php
session_start();
if(!isset($_SESSION['myArray'])){
$_SESSION['myArray'] = array();
}
$_SESSION['myarray'][] = $_GET['newValue'];
echo $_GET['newValue'];
?>
可能最简单的方法是使用jQuery cookie
编辑var myArray = []
/编辑
if ($.cookie('arrayItems')){
myArray=JSON.parse($.cookie('arrayItems'));
}
function addItemToArray()
{
myArray.push(document.getElementById("txtMyText").value);
$.cookie('arrayItems',JSON.stringify(myArray));
}
相关文章:
- 如何将字符串拆分为字符,但在javascript中保留空格
- 如何在使用JavaScript或jQuery刷新父页面后保留iframe-src
- Javascript和RegEx:拆分并保留分隔符
- 在页面之间保留 JavaScript 值
- 在页面刷新后保留 JavaScript 变量值
- 在页面发布到服务器并返回错误后保留 javascript 更改
- 如何在保留 JavaScript 调试器功能的同时进行优雅的异常处理
- 我什么时候应该在html文件上保留Javascript
- 在提交 HTML 表单后保留 JavaScript 中的 innerHTML 值
- 如何保留javascript变量,即使我重新加载或重定向到任何其他页面
- 如何在页面更改时保留Javascript状态
- 删除字符串的前半部分,但保留javascript或jquery的后半部分
- 如何保留javascript工具上下
- 在粘贴到文本区域时保留javascript字符串的换行符
- 返回值并保留javascript对象的成员
- 如何保留JavaScript变量,而PayPal的工作
- React-如何在服务器端渲染时保留javascript
- asp.net mvc-在.net mvc中保留javascript状态
- 是否有任何主流浏览器不保留JavaScript对象中的插入顺序
- 如何在页面刷新时保留 javascript 数组