Timo "God's Boss" Reitz: script-optimierung mit JSLint

Beitrag lesen

function getPageOffsets(el){

var left=el.offsetLeft;
var top=el.offsetTop;
if(el.offsetParent&&el.offsetParent.clientLeft||el.offsetParent.clientTop){
left+=el.offsetParent.clientLeft;
top+=el.offsetParent.clientTop;}
while(el=el.offsetParent){
left+=el.offsetLeft;
top+=el.offsetTop;}
return{x:left,y:top};}

  

> gibt folgende meldung aus:  
> Problem at line 8 character 9: Expected a conditional expression and instead saw an assignment.  
> while(el=el.offsetParent){  

JSLint überprüft JavaScript darauf, ob Crockfords empfohlener Programmierstil eingehalten wurde. Du solltest die Warnungen, die ausgegeben werden, entsprechend nehmen - als Empfehlungen.  
  
Du kannst aber natürlich die Funktion auch so umschreiben:  
~~~javascript
function getPageOffsets(el){  
  var left=0,top=0;  
  if (el.offsetParent&&el.offsetParent.clientLeft||el.offsetParent.clientTop){  
    left=el.offsetParent.clientlLeft;  
    top=el.offsetParent.clientTop;}  
  while (el.offsetParent){  
    el=el.offsetParent;  
    left+=el.offsetLeft;  
    top+=el.offsetTop;}  
  return{x:left,y:top};}

Dann sollten keine Warnungen mehr auftauchen.

--
Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|