2013-01-18 3 views
0

등급을 표시하는 자바 스크립트 기능이 있습니다. 사용자가 평가할 별을 클릭하면 평가 메시지를 표시해야하며 사용자가 페이지를 새로 고침 할 때 평가 해 주셔서 감사합니다. 대신이 메시지를 보내주십시오. 아래 코드는 내 도움이 될 수 있습니까?새로 고침 후 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> 
+0

... – esp

+0

는 내가 평가 메시지에 대한 감사 표시해야 속도로 스타 내 HTML..When 사용자의 클릭을 추가하고 난 정격 별을 제거해야합니다 ....사용자가 이미 등급이 매겨진 페이지를 새로 고침 할 때 평가 메시지를 보내 주셔서 감사합니다. – Cherry

+0

등급을 매기고 등급을 평가 해 주셔서 감사합니다. document.getElementById ("rateme"). innerHTML.style. 가시성 = '숨김'; – Cherry

답변

0

당신은 당신이 문서는 이미로드하거나하지 않은 경우 확인 페이지를 다시로드 할 때 사용자의 비율로 즉시 문서를 쿠키를 저장하고 그 쿠키 값을 확인해야합니다.

+0

몇 가지 샘플 코드를 공유 할 수 있습니까? – Cherry

0

또는 페이지를 새로 고침하는 경우 당신은 또한 서버에서이 문서의 전류 정격을 가져올 수 어쨌든

+0

그냥 메시지를 표시해야하는 현재 등급을 가져올 필요가 없습니다. – Cherry

+0

이전 대답이 충분합니다. 나와 함께 쿠키 처리에 대한 참조 코드를 공유하겠습니다. – gurvinder372

0

당신은 여기에 몇 가지 옵션을 가지고 있고, 무엇을 당신이 당신의 요구 사항에 따라 달라집니다 것입니다.

큰 문제는 영속성 중 하나입니다. 그로 인해, 만약 내가 뭔가를 평가하고 Thank You 메시지를 받았다면, 나는 내 전화 브라우저 나 다른 컴퓨터의 브라우저에서 같은 페이지를 볼 수 있을까요? 그렇지 않은 경우, 한 번 표시해야하는 메시지 일 뿐이며 나중에 다시 '평가하기'옵션이 표시되면 걱정하지 않아도됩니까?

페이지 새로 고침 사이에 상태를 저장하는 것에 대한 질문에 따라 필요성이 영구성을 보존하는쪽으로 더 많은 것처럼 들립니다.

궁극적으로 평가 상태가 영구적으로 저장됩니다 보장 할 수있는 유일한 방법은 백엔드 (서버) 응용 프로그램에서 사용자 계정으로 묶어 것입니다. 그렇게하면 다른 브라우저에서 동일한 페이지를 볼 때나 오랜 시간이 지나면 서버에서 데이터베이스를 검색하여 "Geuis가 이것을 평가하여 감사 메시지를 표시"할 수 있습니다.

감사의 표시가 짧은 시간이면 memcache와 같은 임시 캐시에 키를 저장할 수 있습니다. 각 페이지를 새로 고침 할 때 짧은 자바 스크립트를 사용하여 캐시 서버에 xhr 요청을 보내서 해당 페이지를 평가했는지 여부를 확인할 수 있습니다. 결국 키는 캐시에서 빠져 나오므로 아마 1 시간에서 1 일 후에 페이지를 다시 볼 때 페이지를 평가하라는 메시지가 표시됩니다. 이것은 반영구적 인 솔루션이지만 계정에 연결된 한 모든 장치 또는 브라우저에서 작동합니다.

가장 취약하지만 가장 쉬운 솔루션은 순전히 클라이언트 측입니다. 여기서 옵션은 a) 쿠키에 정격/비 정격 값을 저장하거나 b) localStorage를 사용하는 것입니다. 어느 경우 든 상태를 저장하게됩니다. 쿠키 및 localStorage는 장치 또는 브라우저간에 전송되지 않습니다. localStorage는 만료되지 않지만 결국에는 쿠키가 만료됩니다. 또한 사용자는 결국 쿠키 및 localStorage 캐시를 지우고 상태를 "Rate me"로 되돌릴 수 있습니다.

필자가 볼 수 있기를 바라며, 답변은 실제로 에 있으며 정확도는입니다. 영속성의 스펙트럼을 따라 달성하려는 것이 있습니다.

그리고 단지 말하면, 익명의 영속성과 같은 것은 없습니다. 나는. 사용자가 귀하의 사이트에 익명으로있을 수는 없지만 투표 상태를 브라우저간에 전송되는 방식으로 영구 보존하십시오. 당신은 에 서버 측 계정과 비슷한 것을 부여해야합니다. 당신이 HTML을 게시하고 문제가 무엇인지 설명 할 경우 도움이 될

관련 문제