如何修改代码实现记录数小于6(含0条)时隐藏指定链接?
解决记录数为0时指定链接无法隐藏的问题
问题说明
需求是当记录数小于6条时隐藏指定链接,当前代码在记录数为1条时能正常生效,但记录数为0条时链接依然显示,需要修复这个问题。
问题根源
原代码把链接的显示/隐藏逻辑写在了$.each循环内部:
- 当记录数为0时,循环根本不会执行,链接的样式始终保持初始状态(默认可见)
- 循环内每次迭代都重复获取DOM元素,属于冗余操作
- 通过循环的
index判断逻辑不准确,应该直接基于记录的总数量来判断
修复后的代码
function getfunction(token) { httpRequest = new XMLHttpRequest(); httpRequest.open("GET", "/path"); httpRequest.onreadystatechange = function () { if (httpRequest.readyState === 4) { if (httpRequest.status === 401) { SignOut(); } else { var data = JSON.parse(httpRequest.response); var d = $(data).get().reverse(); // 提前获取链接元素,避免重复DOM查询 var link = document.getElementById('id-name'); // 直接根据记录总数判断:小于6条则隐藏 if (d.length < 6) { link.style.visibility = 'hidden'; } else { link.style.visibility = 'visible'; } // 继续处理记录渲染的逻辑(如果有的话) $.each(d, function(index, itemData) { // 这里写渲染每条记录的代码 }); } } }; }
关键修改点
- 将链接元素的DOM查询移到循环外,只执行一次,提升性能
- 直接用
d.length(记录总数量)判断:当总数小于6(包括0条)时隐藏链接,否则显示 - 把记录渲染的逻辑和链接显示逻辑分离,职责更清晰
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

