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

时间:2014-10-31 16:01:59

标签: javascript jquery ajax

我有一个独特的问题,希望有人可以提供帮助。我有一个页面,它使用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文件中工作,我无法弄清楚原因。有人有任何线索吗?

0 个答案:

没有答案