pla*_*oud 6 javascript sorting greasemonkey
我正在为一个带有表格的页面写一个greasemonkey user.js.(表格是100行乘18列.)现在我想做的是让它在列上排序,并让它在Chrome和Firefox中运行.
到目前为止,所有搜索答案都会产生使用jquery/dojo或类似内容的建议.
没有任何外部代码我可以完成吗?所有这只是以不同的顺序替换行的问题,对吧?或者这是一个愚蠢的说法?
问题是我已经在使用dojo来满足某些查询需求,但由于我希望它能够在Firefox和Chrome中运行,我只需在我的脚本中复制粘贴整个dojo的东西.
此外,到目前为止我发现的大多数解决方案似乎更适合在构建表时使用,而不是用于更改现有表.
任何帮助表示赞赏.
编辑:表格中的所有单元格都包含数字.
聪明的方法是使用像tablesorter这样的工具。
但是,由于您不想使用外部代码(目前),因此可以通过困难的方式来完成。
以下是如何以半困难的方式做到这一点。请注意,我正在使用 jQuery。明智的做法是至少将其合并到您的脚本中。
继续使用该// @require指令。您仍然可以使用Tampermonkey 扩展在 Chrome 中运行 GM 脚本。
(还有其他方法可以将 jQuery 包含在 Chrome 下的 GM 脚本中。)
不管怎样,像这样的代码:就能解决问题:
//--- Get the table we want to sort.
var jTableToSort = $("table#myTable");
//--- Get the rows to sort, but skip the first row, since it contains column titles.
var jRowsToSort = jTableToSort.find ("tr:gt(0)");
//--- Sort the rows in place.
jRowsToSort.sort (SortByFirstColumnTextAscending).appendTo (jTableToSort);
function SortByFirstColumnTextAscending (zA, zB)
{
var ValA_Text = $(zA).find ("td:eq(0)").text ();
var ValB_Text = $(zB).find ("td:eq(0)").text ();
if (ValA_Text > ValB_Text)
return 1;
else if (ValA_Text < ValB_Text)
return -1;
else
return 0;
}
Run Code Online (Sandbox Code Playgroud)
要对数字进行排序,您可以使用如下排序函数:
function SortBy2ndColumnNumber (zA, zB)
{
var ValA = parseFloat ($(zA).find ("td:eq(1)").text () );
var ValB = parseFloat ($(zB).find ("td:eq(1)").text () );
return ValA - ValB;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3909 次 |
| 最近记录: |