Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要定制数据分拣机,并在最末端设置一个值_Javascript_Html_Sorting_Html Table - Fatal编程技术网

Javascript 需要定制数据分拣机,并在最末端设置一个值

Javascript 需要定制数据分拣机,并在最末端设置一个值,javascript,html,sorting,html-table,Javascript,Html,Sorting,Html Table,我试图用Javascript创建一个数据排序器函数,在HTML表的最后一个位置放置一个值(在我的例子中是Total)。然而,Total是按字母顺序排序的 以下是我的Javascript代码: function methodNameSorter(a, b) { // Total must be at very end of the list of methods. if (a === "Total" && b === "Total") return 0; i

我试图用Javascript创建一个数据排序器函数,在HTML表的最后一个位置放置一个值(在我的例子中是Total)。然而,Total是按字母顺序排序的

以下是我的Javascript代码:

function methodNameSorter(a, b) {
    // Total must be at very end of the list of methods.
    if (a === "Total" && b === "Total") return 0;
    if (a === "Total") return 1;
    if (b === "Total") return -1;

    var result = a.localeCompare(b);
    return result;
}
以下是通过引导使用表中函数的HTML:

<table id="methods-summary-table" class="table table-hover" data-toggle="table" data-sort-name="name" data-sort-order="asc">
    <thead>
        <tr>
          <th data-field="name" data-sortable="true" data-sorter="methodNameSorter">Method name</th>
          ...
        </tr>
    ...
    </thead>
...
</table>

你知道我做错了什么吗?

上面所做的
Total
检查是有效的,只是参数,
a
b
是错误的

参数的格式如下:

下面是处理
标记的更新Javascript函数。
var方法_a=a.split('>')[1]。切片(0,-3)
var方法_b=b.split('>')[1]。切片(0,-3)
//Total必须位于方法列表的最末尾。
if(方法a==“总计”&方法b==“总计”)返回0;
如果(方法a==“总计”)返回1;
如果(方法b==“总计”)返回-1;
var结果=方法a.localeCompare(方法b);
返回结果;
}

什么是“a”和“b”?它们是innerhtml还是元素本身?如果它们是元素,则需要使用
If(a.innerHTML==='Total')
而不是'a'和'b'是单元格的字符串。我可以通过在Chrome开发者工具中调试来确认这一点。再次检查这一点,因为你的代码可以在数组中工作。
['Login'、'Logout'、'Total'、'Transaction\u A'、'Verify\u X']
,用你的fn排序会给我
“Login,Logout,Transaction\u A,Verify\u X,Total”
@Shilly:没错,
a
b
有点问题,它们不是我想要的字符串,它们是单元格的HTML内容(在我的例子中也有一个
)。我要看看怎样才能弄到绳子
a.innerHTML
返回
未定义的
在我的情况下,我似乎不能使用这个。嗯,所以我想我们必须去父级。您可以更新以显示TH中的具体内容以及节点名“a”和“b”中的节点名,以便我们知道需要添加多少父元素。因此,答案是a和b根本不是html节点。它们是这些节点的outerHTML,而不是节点本身。我希望这是在引导文档中,因为在您告诉我调试器说“a”是
之后,我错误地认为它是整个节点,而不是outerHTML。
Login
Logout
Total
Transaction_A
Verify_X
function methodNameSorter(a, b) {
    // Keep the method name only (remove the <a href=...></a> tag).
    var method_a = a.split('>')[1].slice(0, -3)
    var method_b = b.split('>')[1].slice(0, -3)

    // Total must be at very end of the list of methods.
    if (method_a === "Total" && method_b === "Total") return 0;
    if (method_a === "Total") return 1;
    if (method_b === "Total") return -1;

    var result = method_a.localeCompare(method_b);
    return result;
}