html代码
<select id="select_budgetary" name="budgetary" style="width: 100%">
<option value="0">预算内</option>
<option value="1">预算外</option>
</select>
离开页面时保存选中的value
window.onbeforeunload = function () {
var storage = window.localStorage;
if (window.localStorage) {
var select_budgetary = document.getElementById('select_budgetary');
storage.setItem("budgetary", $('#select_budgetary').val());
console.log($('#select_budgetary').val());
}
return;
}
加载页面时读取value设置select选中状态
$(document).ready(function () {
var storage = window.localStorage;
console.log(storage.getItem("budgetary"));
var select_budgetary = document.getElementById("select_budgetary");
for (var i = 0; i < select_budgetary.options.length; i += 1) {
if (select_budgetary.options[i].value == storage.getItem("budgetary")) {
select_budgetary.options[i].selected = true;
break;
}
}
});
现在的问题是离开页面和加载页面时打印的value是正常的,在加载页面后select的选中状态依旧是默认状态,点开select后的高亮选项却是和localStorage读取的value对应的,但select的文本一直没有变化
需要select文本变化,需要添加语句 select_budgetary.options[i].text = "";
这么多无用代码,直接val赋值给select就行了,测试了没有问题,会更换为上次选择的
<select id="select_budgetary" name="budgetary" style="width: 100%">
<option value="0">预算内</option>
<option value="1">预算外</option>
</select>
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.7.1/jquery.min.js"></script>
<script>
window.onbeforeunload = function () {
if (window.localStorage) storage.setItem("budgetary", $('#select_budgetary').val());
}
$(document).ready(function () {
var v
if (v = storage.getItem("budgetary")) $('#select_budgetary', v);
});
</script>