需要单独的javascript文件函数才能工作,而不是

需要单独的javascript文件函数才能工作,而不是,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个独特的问题,我希望有人能帮助我。我有一个页面,它使用AJAX从控制器中提取数据,并将其呈现给此函数以构造一个表: // make rows in table from json data function makeTableRows() { if (jsonTableData != null) { tbl = null; tbl = createTable('tableResults'); // co

我有一个独特的问题,我希望有人能帮助我。我有一个页面,它使用AJAX从控制器中提取数据,并将其呈现给此函数以构造一个表:

     // make rows in table from json data
function makeTableRows() {
    if (jsonTableData != null) {
        tbl = null;
        tbl = createTable('tableResults');
        //            constructHeader(tbl, 'left', jsonTableData[0]);
        newHeader(tbl, 'left', jsonTableData[0]);
        var totalItems = jsonTableData.length;
        var topItem;
        topItem = 0;
        if ((lastItem + perpage) > totalItems) {
            topItem = totalItems;
            $(".btnNext").prop('disabled', true);
        }
        else {
            topItem = lastItem + perpage;
        }
        for (var i = lastItem; i <= topItem - 1; i++) {
            makeTableRow(tbl, jsonTableData[i], 'left', true, 'showTourDetails(' + jsonTableData[i]["TransactionID"] + ',' + i + ')', 0);
        }

        $("#divSearchResults").html(tbl);
        makePagesLabel();
        makeTableFooter(tbl);
    }
}
单独文件中的函数如下所示:

 function constructHeader(table, alignment, firstRow) {
  if (firstRow != null) {
    var thead = document.createElement('thead');
    table.appendChild(thead);
    var tr = document.createElement('tr');
    for (var key in firstRow) {
        var header = key.match(/[A-Z][a-z]*/g);
        var newHeader = '';
        for (var i = 0; i <= header.length - 1; i++) {
            newHeader += header[i] + ' ';
        }
        var th = document.createElement('th');
        var text = document.createTextNode(newHeader);
        th.appendChild(text);
        th.style.textAlign = alignment;
        th.style.cursor = 'pointer';
        th.setAttribute('title', "Sort by " + newHeader);
        th.onclick = function () {
            var rows = $(table).find('tbody').find('tr').toArray().sort(comparer($(this).index()));
            this.asc = !this.asc;
            if (!this.asc) {
                rows = rows.reverse();
            }
            for (var j = 0; j < rows.length; j++) {
                $(table).append(rows[j]);
            }
            $(table).find('tbody').find('tr:even').css("background-color", "#dae5f4");
                $(table).find('tbody').find('tr:odd').css("background-color", "#b8d1f3");
        };
        tr.appendChild(th);
    }
    thead.appendChild(tr);
 }
}

基本上,该函数为每个列的标题创建一个排序过程。在对列进行排序之后,我想重新应用斑马条纹,该条纹应用于表的类。若我不试着重新申请,我最终会把条纹弄得一团糟。现在的问题是,如果我将函数复制到.cshtml页面,并将其命名为“newheader”,则重新条带化工作正常。它在单独的JS文件中不起作用,我不知道为什么。有人有任何线索吗?

为什么要对斑马条纹的每一行单独应用css?只需在CSS头中执行一次:tr:nth child偶数{background color:red;}tr:nth childodd{background color:white;}表类在首次加载时应用条带化。当它被分类时,我正在尝试重新划分条带。这两种方式都可以,但在单独的js文件中不起作用。这就是问题所在…Jonathan的解决方案意味着您不必在任何javascript位置对其进行条带化,即使在重新使用表之后也是如此。我在页面附带的.css文件中有这样的内容:。table_body thead tr:nth childodd{background:b8d1f3;}。因此,当加载表时,它会被很好地剥离。当我分类的时候,条纹会发生变化,而且都是乱七八糟的。我正在像上面显示的那样重写表行,颜色跟随行。那么我该怎么做呢?@JonathanM-我理解你的意思,当我第一次加载表时CSS工作得很好。表格排序后,原始颜色将跟随该行,并且不会重新剪裁。为什么不呢?