The following code works in Firefox, Chrome and Opera but not in any flavour of IE:
[CODE]function $(v,o) { return((typeof(o)==’object’?o:document).getElementById(v)); }
function $S(o) { return((typeof(o)==’object’?o:$(o)).style); }
function agent(v) { return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); }
function abPos(o) { var o=(typeof(o)==’object’?o:$(o)), z={X:0,Y:0}; while(o!=null) { z.X+=o.offsetLeft; z.Y+=o.offsetTop; o=o.offsetParent; }; return(z); }
function XY(e,v) { var o=agent(‘msie’)?{‘X’:event.clientX+document.body.scrollLeft,’Y’:event.clientY+document.body.scrollTop}:{‘X’:e.pageX,’Y’:e.pageY}; return(v?o[v]:o); }
star={};
star.mouse=function(e,o) { if(star.stop || isNaN(star.stop)) { star.stop=0;
document.onmousemove=function(e) { var n=star.num;
var p=abPos($(‘star’+n)), x=XY(e), oX=x.X-p.X, oY=x.Y-p.Y; star.num=o.id.substr(4);
if(oX<1 || oX>84 || oY<0 || oY>19) { star.stop=1; star.revert(); }
else {
$S(‘starCur’+n).width=oX+’px’;
$S(‘starUser’+n).color=’#111’;
$(‘starUser’+n).innerHTML=Math.round(parseInt(oX/84*100)/10)*10+’%’;
}
};
} };
This is the code which calls it (I’ve stripped it all out apart from the divs etc):
[CODE]<div>
<div>
<table id=’star’>
<tr>
<td>
<ul id=”star0″ class=”star” onmousedown=”star.update(event,this)” onmousemove=”star.mouse(event,this)” title=”Rate This!”>
<li id=”starCur0″ class=”curr” title=”98″ style=”width: 82px;”></li>
</ul>
<div style=”color: rgb(0, 0, 255);” id=”starUser0″ class=”user”>98%</div>
<br style=”clear: both;”>
</td>
It does however work in IE if called from within the following structure:
[CODE]<div id=”star”>
<ul id=”star0″ class=”star” onmousedown=”star.update(event,this)” onmousemove=”star.mouse(event,this)” title=”Rate This!”>
<li id=”starCur0″ class=”curr” title=”98″ style=”width: 82px;”></li>
</ul>
<div style=”color: rgb(0, 0, 255);” id=”starUser0″ class=”user”>98%</div>
<br style=”clear: both;”>
I’ve spent several days trying to fix the problem with no luck so far so if anyone can suggest what the problem might be I’d be really appreciative.
Ian