2013-11-01 71 views
0

我有這樣的代碼創建我如何獲得「j」的功能以外的功能?

<table> ... content ... 
</ tables> 

...我需要「J」的累計值圈外「FOR」後發現......

var dt = $(".table thead th").length; 
for (var i = 0; i < dt; ++i) { 
    (function (j) { 
     var dt = $(".table thead th").length; 
     $(".table thead").each(function() { 
      var $ths = $(this).find('th'); 
      if ($ths.length != 0 && $ths.eq(j).text() != "Estado" && $ths.eq(j).text() != "ESTADO" && $ths.eq(j).text() != "Acciones" && $ths.eq(j).text() != "ACCIONES") { 
       j = j + ","; // I need this value, the value to be displayed is something like this: 0,1,2,3 ... 
       alert(j); 
      } 
     }); 
     return j; 
    })(i); 
} 

/* I need the value of "j" here, but this does not work */ 
var variable = j; 
alert(variable); 
+0

它不應該是'函數J()'? – usernolongerregistered

+2

@Agony不,這是一個匿名函數,它接受一個名爲'j'的單個參數。 –

回答

3

類似於下面的東西應工作:

var dt = $(".table thead th").length; 
var variable = ""; 
for (var i = 0; i < dt; ++i) { 
    variable += (function (j) { 
     var dt = $(".table thead th").length; 
     $(".table thead").each(function() { 
      var $ths = $(this).find('th'); 
      if ($ths.length != 0 && $ths.eq(j).text() != "Estado" && $ths.eq(j).text() != "ESTADO" && $ths.eq(j).text() != "Acciones" && $ths.eq(j).text() != "ACCIONES") { 
       j = j + ","; 
       alert(j); 
      } 
     }); 
     return j; 
    })(i); 
} 
alert(variable); 

在你當前的代碼j是由匿名函數返回,但它不以任何方式使用您的內,循環您需要通過在每次迭代中添加函數的返回值來執行累加。

作爲一個方面說明,在循環外部創建函數會更有效。

+1

我想'變量'應該被初始化爲一個空字符串,而不是零。 – Blazemonger

+0

是的,事實上,儘管j是在原始代碼中返回的,但它並沒有分配給任何東西,所以它的值仍然在函數的作用域內 - 返回j並且將返回的值與「variable + =(...)(我)「希望工作。 – eimaj

1

好吧,快速和骯髒,根據您現有的代碼。只需要一個變化:

var variable; 
var dt = $(".table thead th").length; 
for (var i = 0; i < dt; ++i) { 
    (function (j) { 
     var dt = $(".table thead th").length; 
     $(".table thead").each(function() { 
      var $ths = $(this).find('th'); 
      if ($ths.length != 0 && $ths.eq(j).text() != "Estado" && $ths.eq(j).text() != "ESTADO" && $ths.eq(j).text() != "Acciones" && $ths.eq(j).text() != "ACCIONES") { 
       j = j + ","; 
       alert(j); 
      } 
     }); 
     variable += j; 
     return j; 
    })(i); 
} 

alert(variable); 
2

我想你在找什麼是

var indexes = $(".table thead th").map(function (i) { 
    var text = $.trim($(this).text()); 
    if (text && text != "Estado" && text != "ESTADO" && text != "Acciones" && text != "ACCIONES") { 
     alert(i); 
     return i; 
    } 
}).get().join(',') 

,甚至更短的

var ignore = ["Estado", "ESTADO", "Acciones", "ACCIONES"] 

var indexes = $(".table thead th").map(function (i) { 
    var text = $.trim($(this).text()); 
    if (text && $.inArray(text, ignore) == -1) { 
     alert(i); 
     return i; 
    } 
}).get().join(',')