2012-11-30 28 views
2

我有3個框,我希望它們在它們之間切換,並在第二次點擊時切換。目前它在它們之間切換的很好(IF部分),但是當我點擊相同的方框將其關閉時,如果不起作用(「其他if」部分似乎不起作用)。我認爲我需要重構if語句。任何幫助是極大的讚賞。Raphael.js - if/else語句不會觸發點擊

這裏是JS提琴: http://jsfiddle.net/FFdjS/5/

這裏是元素的點擊一個if語句:

box1.click(function() { 
    if (box1.attr(strOff)) { 
     box1.attr(strOn); 
     box2.attr(strOff); 
     box3.attr(strOff); 
    } else if (box1.attr(strOn)) { 
       box1.attr(strOff); 
    } else {} 
}); 

回答

1

Element.attr(...)當對象作爲參數傳遞設置屬性。返回元素。如果你想的toogle它 - 用這樣的:

box1.click(function() { 
    if (box1.attr('stroke-width') == 1) { 
     box1.attr(strOn); 
     box2.attr(strOff); 
     box3.attr(strOff); 
    } else if (box1.attr('stroke-width') == 5) { 
      box1.attr(strOff); 
    } else {} 
}); 

例如在jsFiddle

1

您已經創建將總是在第一if返回true的if-else聲明..

原因是,對於條件,您傳遞的方法總是返回true的結果。作爲Raphaels attr Spec表示,該方法將返回...

  • 的元件(如果ATTR名稱和值被傳遞)
  • 值(屬性如果ATTR名稱傳遞)
  • 數組值(如果ATTR名將傳遞)
  • Attr對象(如果沒有如果通過)

所以,你基本上只是setting在if語句箱子,然後將返回true。相反,您應該只傳遞需要檢查的attr名稱並將其與您的值進行比較。類似,

if(box1.attr('stroke-width')=='5'){...}else{...}