Javascript: b / onMouseOver işleyicisi c iki tıklama gerektiren onClick olay

2 Cevap php

Ben Netflix / Amazon tarzı star-rating sistemi var. Böylece, yıldız geçici onMouseOver yanar ve bir tıklama bir PHP çağrı ve yıldız rengi kalıcı bir değişikliği tetiklemek gerekiyordu.

OnClick olay ikinci tıklama kadar tetiklenir rağmen her şey çalışıyor. Bu bir sonlandırma eylemi (onMouseOut veya tıklama) ile karşılaşana kadar onMouseOver olayı hala aktif olduğundan bu olduğu görülmektedir.

Ben de benzer sorular gördüm, ama hiçbir on-nokta cevaplar ettik.

Teşekkürler!

function rate(img_name,action,headlineid,userid,rating) {
        var baseurl='http://www.mysite.com/images/';
    var imgoff='atcstar3.gif';
        var imghover='atcstar.gif';
        var imgon='atcstar.gif';
    imgname=img_name;
        hid=headlineid;
var current=document.getElementById(img_name).src;
        var star=img_name.replace(hid+'-star','');


       switch (action) {
                case 'hover':
                                for (i=1;i<=star;i++) {
                                        document.getElementById(hid+'-star'+i).src=baseurl+imghover;
                               }
                        break;

                case 'click':
                        if (current!=baseurl+imgon) {
                                for (i=1;i<=star;i++) {
                                        document.getElementById(hid+'-star'+i).src=baseurl+imgon;
                                }

                                current=baseurl+imgon;

                                xmlHttp=GetXmlHttpObject()
                                if (xmlHttp==null)
                                 {
                                 alert ("Browser does not support HTTP Request")
                                 return
                                 }

                                if (getCookie("votes")=="") {
                                  setCookie("votes",hid+'-'+star,3);
                                } else {
                                        votes=getCookie("votes")
                                        votes=votes+","+hid+'-'+star
                                        setCookie("votes",votes,3);
                                }


                                var url="rate.php?";
                                url=url+"headlineid="+hid;
                                url=url+"&userid="+userid;
                                url=url+"&rating="+star;
                                url=url+"&sid="+Math.random();
                        xmlHttp.onreadystatechange=stateChangedRateStory;
                                xmlHttp.open("GET",url,true);
                                xmlHttp.send(null);
                     	newrank=star;




                        } else {
                            document.getElementById(img_name).src=baseurl+imgoff;
                                current=baseurl+imgoff;
                        }
                        break;
                case 'out':

                        if (current!=baseurl+imgon || (newrank!=star && rating<star)) {
                              for (i=5;i>=rating+1;i--) {
                                        //document[hid+'-star'+i].src=baseurl+imgoff;
                                        document.getElementById(hid+'-star'+i).src=baseurl+imgoff;
                                }
                        }

                        break;
        }
}

2 Cevap

Ben farenin üzerinde değiştirmek için ekran ihtiyaç duyarsan, ben genellikle CSS eleman kullanarak tercih: yerine gezdirin.

onMouseOver olay gerçek dönmek zorunda deneyin.