Javascript 需要定制数据分拣机,并在最末端设置一个值
我试图用Javascript创建一个数据排序器函数,在HTML表的最后一个位置放置一个值(在我的例子中是Total)。然而,Total是按字母顺序排序的 以下是我的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
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;
}