dom事件-刷新后的JavaScript评级
dom events - JavaScript Rating after refreshpage
我有一个JavaScript函数来显示评级。当用户点击星级评级时,我需要显示"感谢您的评级";消息,当用户刷新页面时,我需要显示"感谢您的评分";消息,而不是"评价这篇文章"。下面是我的代码,有人能帮我吗?
<script type="text/javascript">
var sMax; // Isthe maximum number of stars
var holder; // Is the holding pattern for clicked state
var preSet; // Is the PreSet value onces a selection has been made
var rated;
// Rollover for image Stars //
function rating(num){
sMax = 0; // Isthe maximum number of stars
for(n=0; n<num.parentNode.childNodes.length; n++){
if(num.parentNode.childNodes[n].nodeName == "A"){
sMax++;
}
}
if(!rated){
s = num.id.replace("_", ''); // Get the selected star
a = 0;
for(i=1; i<=sMax; i++){
if(i<=s){
document.getElementById("_"+i).className = "on";
document.getElementById("rateStatus").innerHTML = num.title;
holder = a+1;
a++;
}else{
document.getElementById("_"+i).className = "";
}
}
}
}
// For when you roll out of the the whole thing //
function off(me){
if(!rated){
if(!preSet){
for(i=1; i<=sMax; i++){
document.getElementById("_"+i).className = "";
document.getElementById("rateStatus").innerHTML = me.parentNode.title;
}
}else{
rating(preSet);
document.getElementById("rateStatus").innerHTML = document.getElementById("ratingSaved").innerHTML;
}
}
}
// When you actually rate something //
function rateIt(me){
if(!rated){
document.getElementById("rateStatus").innerHTML = document.getElementById("ratingSaved").innerHTML + " :: "+me.title;
preSet = me;
rated=1;
sendRate(me);
rating(me);
}
}
// Send the rating information somewhere using Ajax or something like that.
function sendRate(sel){
alert("Your rating was: "+sel.title);
}
</script>
<form id="form1">
<span id="rateStatus">Rate This Article:</span>
<span id="ratingSaved">Thank you for rating.</span>
<div id="rateMe" title="Rate Me...">
<a onclick="rateIt(this)" id="_1" title="ehh..." onmouseover="rating(this)" onmouseout="off(this)"></a>
<a onclick="rateIt(this)" id="_2" title="Not Bad" onmouseover="rating(this)" onmouseout="off(this)"></a>
<a onclick="rateIt(this)" id="_3" title="Pretty Good" onmouseover="rating(this)" onmouseout="off(this)"></a>
</div>
您需要在用户对文章进行评分后立即保存cookie,并在再次加载页面时检查cookie值,以确认文章是否已经加载。
或者,如果您正在刷新页面,您也可以从服务器获取这篇文章的当前评级
这里有几个选项,您的操作将取决于您的需求。
最大的问题是持久性。因此,如果我对某件事进行了评价并收到了感谢信息,那么当我在手机浏览器或另一台电脑上的浏览器上查看同一页面时,我是否应该看到同样的信息?否则,它只是一个消息,需要显示一次,你不关心如果我看到"请评分"选项后再次?
根据你关于在页面刷新之间保存状态的问题,听起来你的需求更倾向于保存持久性。
最终,保证永久保存评级状态的唯一方法是将其绑定到后端(服务器)应用程序上的用户帐户。这样,当我从其他浏览器查看同一页面时,或者经过很长一段时间后,服务器可以在数据库中查找并看到"Geuis对此进行了评级,显示了感谢消息"。如果您只需要在短时间内显示Thank you,您可以将键存储在临时缓存中,如memcache。在每次刷新页面时,一小段javascript可以向缓存服务器发出xhr请求,以检查我是否对页面进行了评级。最终,这个键会从缓存中掉出来,所以也许在一个小时或一天后,当我回去看这个页面时,我就会被提示对这个页面进行评级。这是一个半永久性的解决方案,但它可以在任何设备或浏览器上工作,只要它绑定到一个帐户。
最脆弱,但最容易实现的解决方案是纯客户端。在这里,您的选择是a)将评级/未评级的值存储在cookie中,或者b)使用localStorage。在任何一种情况下,它都将存储状态。但是 cookie和localStorage不会在设备或浏览器之间传输。localStorage不会过期,但cookie最终会过期。此外,用户最终可以决定清除他们的cookie和localStorage缓存,并将状态设置回"给我打分"。
我没有提供任何代码示例,因为我希望您可以看到,答案确实首先在中,正是您试图在持久性范围内完成的内容。
我想说的是,真的没有匿名的永久存在。也就是说,你不能让一个用户匿名访问你的网站,但却以一种在浏览器之间传输的方式永久保存他们的投票状态。你有有一些类似于服务器端帐户来做到这一点。
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- javascript循环评级
- 在javascript中显示基于评级的图像
- javascript和css的评级系统问题
- 评级系统 javascript 不会将结果发送到 Firebase
- 使用javascript根据计算值显示“评级”,如星星
- 无法使用 JavaScript API 从 DailyMotion 检索每个视频的内容评级
- 我如何使用 JavaScript 获得 5 星评级
- JavaScript:使用 marginLeft 将评级星星放置在图像上
- 与柏拉图一起进行JavaScript代码可维护性评级
- 如何使用jquery/javascript设置评级控件的CurrentRating属性
- 使用Ajax或Javascript以及表单的其余部分提交评级
- 使用HTML单选按钮和javascript进行评级
- 如何在javascript中显示动态数值作为星级评级
- 使用jQuery, PHP和SQL的评级系统:将评级值从javascript传递到PHP
- 在没有jquery的情况下表示评级星中json文件中的数据!!纯javaScript
- 如何检查评级设置是否由 SharePoint 2010 中的 Javascript 启用
- dom事件-刷新后的JavaScript评级
- Javascript评级系统