我有一些代码在第二页刷新后完美运行。基本上我有一个下拉选项,选择会在URL的末尾添加一个排序顺序,在选择此排序顺序后,页面将被刷新。
这是我的问题在这篇文章的背面,cookie似乎没有保持用户选择,但随后的页面刷新甚至通过catalouge的分页cookie保持用户选择是完美的,这只是第一次选择后加载页面。
这是我的代码
<!-- List header -->
<select id="Selection" class="sorter" onchange="document.cookie= 'myDDIdx = ' + this.selectedIndex + '; path=/;';location=this.options[[this.selectedIndex]].value" style="float:right;margin-right:8px;">
<option value="">Sort by</option>
<option value="?orderby=0">Code</option>
<option value="?orderby=1">Title A-Z</option>
<option value="?orderby=2">Title Z-A</option>
<option value="?orderby=3">Brand</option>
<option value="?orderby=4">Lowest price</option>
<option value="?orderby=5">Highest price</option>
<option value="?orderby=6">Lowest Quantity</option>
<option value="?orderby=7">Highest Quantity</option>
</select>
<div style="clear:both;"></div>
<script>
var sidx = document.cookie.indexOf("myDDIdx");
if(sidx != -1)
window.onload = function () { document.getElementById("Selection").selectedIndex = document.cookie.substr(sidx + 8,1); }
</script>
是否有人能够建议我如何解决此问题?代码剪辑 - 非常感谢。
答案 0 :(得分:1)
我相信你获取cookie的方式不正常。我已稍微更改了代码以使其正常工作。另请注意,更改页面时使用window.location
而不仅仅是位置。
window.onload = function () {
var cookies = document.cookie,
sidx = !!cookies ? cookies.match(/myDDIdx=([0-9]+?);?/) : false;
if (!!sidx && sidx.length >= 2) {
document.getElementById("Selection").selectedIndex = sidx[1];
}
};
document.getElementById("Selection").onchange = function () {
document.cookie = 'myDDIdx=' + this.selectedIndex + '; path=/;';
window.location = this.options[[this.selectedIndex]].value;
};