对于jQuery调用中的循环?

时间:2013-08-22 19:10:48

标签: javascript jquery

我想在ASP.NET母版页上创建一个JavaScript函数,我可以从内容页面调用它。我本质上将函数传递给gridview客户端ID和许多列,我将使用此函数在gridview上调用jQuery tablesorter,循环遍历函数调用中指定的列数。

我会像这样调用函数:

sortTable(<%=gridView1.ClientID%>, 8)

我写了这样的函数:

<script type="text/javascript">
        function sortTable(gridView, numberOfColumns) {
            $("#" + gridView).tablesorter({
                headers: {
                    for(var i = 0; i<numberOfColumns; i++){
                        i: { sorter: 'fancyNumber' }
                }

                },
                /*Use jQuery to assign zebra stripe CSS, works in IE6+ 
                rather than using pure CSS which doesn't work in IE8 and below.*/

                widgets: ['zebra'],
                widgetZebra: { css: ['normal-row', 'alt-row'] }
            });
        }
    </script>   

但是,Visual Studio不喜欢for loop。我可以在headers属性中创建一个循环吗?是否有更好的替代方案来实现这一功能?

编辑:我明白了。您不能在对象声明中循环。我假设最好的方法是创建一个字符串并循环遍历numberOfColumns,每次都附加到字符串:

var headerString = "headers: "

for(var i = 0; i < numberOfColumns; i++){
    headerString = headerString & i & " { sorter: 'fancyNumber' } ,"
}

然后在对象声明中使用headersString var吗?

这可能吗?

2 个答案:

答案 0 :(得分:4)

您需要先构建对象:

var headers = {};
for(var i = 0; i<numberOfColumns; i++) {
    headers[i] = { sorter: 'fancyNumber' };
}

$("#" + gridView).tablesorter({
    headers: headers,
    //...
});

我根据你的(不正确的)语法猜测你想要的输出,所以你可能需要调整一下,但这个想法是正确的。

答案 1 :(得分:1)

您无法在对象定义内循环,因为for循环不会计算为值。 if陈述也没有。相反,您需要提前构建对象:

  var headers = {}

  for(var i = 0; i<numberOfColumns; i++)
    headers[i] = { sorter: 'fancyNumber' }

  $("#" + gridView).tablesorter({
    headers: headers

    },
    /*Use jQuery to assign zebra stripe CSS, works in IE6+ 
    rather than using pure CSS which doesn't work in IE8 and below.*/

    widgets: ['zebra'],
    widgetZebra: { css: ['normal-row', 'alt-row'] }
  });