JavaScript - 对 SELECT 选项进行排序
我使用 PHP 扫描目录并列出所有 .xml 文件。每个 XML 文件都包含“名称”元素和“日期”元素。每个 XML 文件的“name”元素作为选项列在选择列表中。这工作得很好,但是,每个 XML 文件中的“日期”元素都不同,并且包含如下日期格式:mm/dd/yyyy。我想要弄清楚如何做是根据日期对项目进行排序,最早的日期是列表中的第一个,最新的日期在最后。
现在假设每个项目的“日期”元素都有不同的值。我需要对这些项目进行排序,最早日期在前。我不确定如何将“日期”元素数据存储在某处,以便 JavaScript 可以处理它。如果这是一个非常模糊的描述,我很抱歉,它已经让我困惑了一段时间,尝试解释起来也很混乱。
更新
所以现在这就是我正在做的事情:
<select name="sel_id" onchange="this.form.submit()" size="20">
<option value="item1">Item 1</option>
<option value="item2">Item 2</option>
<option value="item3">Item 3</option>
<option value="item4">Item 4</option>
</select>
我想最有帮助的一件事是知道除了 value 属性之外是否还有一种方法可以将日期存储在标签中的某个位置,看看它是如何使用的。日期本身不是问题,我已经想通了,这只是将其存储在某个地方以便可以称为客户端的问题。
Using PHP, I scan a directory and list all of the .xml files. Each XML file contains both a "name" element and a "date" element. The "name" element for each XML file is listed as an option in the select list. This works perfectly fine, however, the "date" element in each XML file is different and contains a date format like this: mm/dd/yyyy. What I am trying to figure out how to do is sort the items according to the date, with the earliest date being first one the list and the most recent at the end.
Now say each of those items has a different value for the "date" element. I need to sort those items with the earliest date being first. I'm not sure how I can store the "date" element data somewhere so that it can be handled by JavaScript. I'm sorry if this is a very vague description, it's been baffling me for a while and it's a been confusing to try and explain.
UPDATED
So right now this is what I have working:
<select name="sel_id" onchange="this.form.submit()" size="20">
<option value="item1">Item 1</option>
<option value="item2">Item 2</option>
<option value="item3">Item 3</option>
<option value="item4">Item 4</option>
</select>
I guess one thing that would majorly help is knowing if there's a way to store the date somewhere in the tags besides the value attribute seeing how it's already being used. The date itself isn't a concern, I have that much figured it, it's just a matter of storing it somewhere so that it can be called client side.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您需要:
查看实际效果
[测试于: IE 5.5+、FF 2+、Chrome 4+、Safari 4+、Opera 9.6+]
HTML:
Javascript:
You need to:
See it in action
[Tested on: IE 5.5+, FF 2+, Chrome 4+, Safari 4+, Opera 9.6+]
HTML:
Javascript:
简短而甜蜜。此版本还根据 OP 的要求采用 mm-dd-yyyy 格式的日期。
Short and sweet. This version also accounts for dates being in mm-dd-yyyy format as per the OP's request.
我将从上面的 galambalazs 中获取答案,但使用数据属性而不是日期属性。因为“数据日期”被认为是符合标准的,而“日期”只是一个自定义属性。
I would take the answer from galambalazs above but use the data attribute instead of a date attribute. as "data-date" is considered standards compliant while "date" is just a custom attribute.
您可以将日期表示为选项值,或使用 数据属性 来存储它们有一个选项。
或
假设您的选择列表如下所示:
使用内置的 Array.sort< /a> 函数使用自定义比较器对节点进行排序,排序后将它们重新插入到选择列表中。 在此处查看示例。
You can represent the dates as option values, or use a data attribute to store them with an option.
or
Assuming your select list looks like this:
Use the inbuilt Array.sort function with a custom comparator to sort the nodes, and once sorted re-insert them into the select list. See an example here.