gpt4 book ai didi

Javascript 将表行放置在 ID 较大和较小的行之间

转载 作者:行者123 更新时间:2023-12-02 19:01:58 24 4
gpt4 key购买 nike

我正在构建一个系统,该系统在屏幕上(在表格元素中)输出汽车列表。该页面通过对服务器的 HTTP 调用自动加载更新。

每辆车都有一个ID、一个状态和一些不相关的东西。现在,当用户加载页面时,会显示没有状态“维护”和“失事”的汽车,并且每五秒就会从服务器加载新的 JSON 数据。如果有一辆汽车完成了维护,则应将其添加到表中。该表是按汽车 ID 排序的,问题来了。我写了一些伪代码来澄清我的问题:

if (row_with_greater_id_exits && row_with_lower_id_exists) {
place_row_between_firstRowWithGreaterId_and_FirstRowWithLowerId();
} else if (is_row_with_greater_id) {
jQuery('table#cars tbody').append(generatedHtml);
} else if (is_row_with_lower_id) {
jQuery('table#cars tbody').prepend(generatedHtml);
}

问题是我不知道如何找到具有较大 id 的第一行或具有较小 ID 的第一行。 ID 并不总是成功,因为有些汽车被毁坏了,并且状态也被破坏了。

我希望这里有人遇到过类似的问题,并且可以帮助我找到解决方案。

非常感谢!

最佳答案

您需要循环遍历行并比较 id。当新行的 ID 小于循环中的当前行时,在当前行之前插入新行,并中断循环。

rows.each(function(i, el) {
if (+newrow.id < +el.id) {
$(el).before(newrow);
return false;
}
})
if (!newrow.parentNode)
rows.parent().append(newrow);

此代码假设 rows 是一个包含所有行的集合的 jQuery 对象,而 newrow 是表示新行的 DOM 元素。

还假设 ID 是简单的数字。请注意,数字 ID 仅在 HTML5 中有效。

<小时/>

就我个人而言,我只会使用 native API 来实现此目的:

var tbody = document.querySelector("tbody");

tbody.insertBefore(newrow, [].reduce.call(tbody.rows, function(bef, el) {
return bef || +newrow.id > +el.id ? bef : el;
}, null));

无需测试isFirstLoad。当tbody为空时,它仍然可以工作。但对于旧版浏览器,您需要一个 .reduce() shim。

关于Javascript 将表行放置在 ID 较大和较小的行之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com