2015-06-18 54 views
1

的Javascript自定義函數,我大概真的過於複雜的事情......這是很難解釋所以我就在這裏展示的代碼:裏面的支票循環

for (var i = 0; i < x.length; i++) { 
    (function(i) { 
     if (x[i].className === 'RU') { 
      x[i].style.display = 'none'; 
      if (x[i].previousSibling.tagName === 'BR' && x[i].previousSibling.style.display != 'none') { 
       x[i].previousSibling.style.display = 'none'; 
      } 
     } 
    })(i); 
} 

這工作正常,但我想要做的是在循環內部創建一個函數,該函數將檢查每個x[i].previousSibling是否爲'BR'類型。所以我需要聲明一個函數,它會自行循環,直到它到達一個不是'BR'標籤的元素。我試過了:

for (var i = 0; i < x.length; i++) { 
    (function(i) { 
     if (x[i].className === 'RU') { 
      x[i].style.display = 'none'; 
      var check = true; 
      var a = ''; 
      function foo() { 
       while (check) { 
        if (x[i].previousSibling.tagName === 'BR' && x[i].previousSibling.style.display != 'none') { 
         x[i].previousSibling.style.display = 'none'; 
         a = x[i].previousSibling; 
        }else 
         check = false; 
        foo(); 
       } 
      } 
     } 
    })(i); 
} 

而且什麼也沒做......我認爲它甚至不在foo函數裏面。有什麼建議麼?

+1

您聲明一個函數在那裏,但不執行它。該腳本將在x.length中聲明函數foo,但不會超過此值。 嘗試在for外部聲明funnction,並在var聲明後調用它,可以爲該函數製作x和check參數。 (不知道編碼試圖做)。 – ecarrizo

+1

@ecarrizo我想我只是需要一個新的眼睛。稍作修改後,我得到了我想要的。感謝您的建議。發佈它作爲答案,我會標記爲正確的。 – denikov

+1

哈哈!發生..它的好,粘貼你的工作代碼作爲答案,並接受它:)(你可以回答自己的問題); – ecarrizo

回答

0

這裏有一些調整,以後有什麼工作,擺脫不必要的變量:

for (var i = 0; i < x.length; i++) { 
    (function(i) { 
     if (x[i].className === 'RU') { 
      x[i].style.display = 'none'; 
      var a = x[i]; 
      foo(); 
      function foo() { 
       if (a.previousSibling && a.previousSibling.tagName === 'BR' && x[i].previousSibling.style.display != 'none') { 
        x[i].previousSibling.style.display = 'none'; 
        a = a.previousSibling; 
        foo(); 
       } 
      } 
     } 
    })(i); 
} 
+1

爲什麼不使用'while'循環? 'while(a.previousSibling && a.previousSibling.tagName ==='BR'&& x [i] .previousSibling.style.display!='none'){x [i] .previousSibling.style.display ='none' ; a = a.previousSibling; ''。甚至:'for(var a = x [i]; a.previousSibling && a.previousSibling.tagName ==='BR'&& x [i] .previousSibling.style.display!='none'; a = a。 previousSibling){x [i] .previousSibling.style.display ='none'; } –

+0

箴:「多一種方法來剝皮貓」:) – denikov