求隐藏已完成任务块的代码片段

如题,我希望能隐藏所有文档里面已完成的任务块,最好能有便捷的开关在主界面,方便随时切换。希望大佬提供代码片段,感谢

image.png

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    24858 引用 • 102268 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9433 引用 • 42962 回帖 • 109 关注

相关帖子

被采纳的回答
  • 用下面的 css 隐藏所有已完成任务

    [data-type="NodeListItem"][data-subtype="t"].protyle-task--done{ display:none; }

    然后,配合插件 quickSnippets 就可以了吧

    image.png

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 用下面的 css 隐藏所有已完成任务

    [data-type="NodeListItem"][data-subtype="t"].protyle-task--done{ display:none; }

    然后,配合插件 quickSnippets 就可以了吧

    image.png

    1 回复
  • 5kyfkr 1 评论

    感谢大佬是我要的效果,就是这个插件开关代码片段会把整个界面刷新,去设置里关则不会,有什么办法像设置里那样切换就好了,现在还是不太优雅

    1 回复
    可以找插件作者问问,可能是因为 js 片段有时需要刷新才行,所以作者没有区分 css 和 js 吧,统一用刷新。
    wilsons
  • 或者安装 Run JS 插件

    然后在任意文档中,插入 js 代码块,然后在代码块中输入以下代码

    // 隐藏所有已完成任务 async function main() { // css 代码 const styleContent = ` [data-type="NodeListItem"][data-subtype="t"].protyle-task--done { display: none; } `; // 定义 style 的内容 const styleId = "ShowOrHideAllDoneTask"; // 获取现有的 <style> 元素 let styleElement = document.getElementById(styleId); if (styleElement) { // 如果存在,则删除它 styleElement.remove(); await client.pushMsg({ msg: "已隐藏", timeout: 3000, }); } else { // 如果不存在,则创建并添加它 const newStyle = document.createElement("style"); newStyle.id = styleId; newStyle.textContent = styleContent; document.head.appendChild(newStyle); await client.pushMsg({ msg: "已显示", timeout: 3000, }); } } main(); plugin.saveAction(thisBlock.id, "隐藏所有已完成任务");

    然后,在右键中运行下代码即可,如下图

    image.png

    然后,在顶栏即可快速切换了

    image.png

    1 回复
  • 5kyfkr

    感谢大佬,非常优雅,完美了 ❤️👍

    1 回复
  • wilsons 1 3 评论

    有 bug 耶,无法保存显示隐藏状态,刷新显示状态就没了。

    解决办法:

    1 把之前的代码块代码改成这个

    // 隐藏所有已完成任务 async function main() { // css 代码 const styleContent = ` [data-type="NodeListItem"][data-subtype="t"].protyle-task--done { display: none; } `; // 定义 style 的内容 const styleId = "ShowOrHideAllDoneTask"; // 判断是否加载 const isLoading = args.includes('load'); // 获取存储状态 let status = await api.getFile('/data/storage/'+styleId+'.json'); if(!status || status.code === 404) { status = 'show'; } else { status = status.status || 'show'; } if(!isLoading) status = status === 'show' ? 'hide' : 'show'; if (status === 'show') { // 获取现有的 <style> 元素 let styleElement = document.getElementById(styleId); // 如果存在,则删除它 if(styleElement) styleElement.remove(); if(!isLoading){ await client.pushMsg({ msg: "已显示完成的任务", timeout: 3000, }); await api.putFile('/data/storage/'+styleId+'.json', false, new Blob(['{"status":"show"}'])); } } else { // 如果不存在,则创建并添加它 const newStyle = document.createElement("style"); newStyle.id = styleId; newStyle.textContent = styleContent; document.head.appendChild(newStyle); if(!isLoading){ await client.pushMsg({ msg: "已隐藏完成的任务", timeout: 3000, }); await api.putFile('/data/storage/'+styleId+'.json', false, new Blob(['{"status":"hide"}'])); } } } main(); plugin.saveAction(thisBlock.id, "显示/隐藏所有已完成任务");

    2 给 js 代码块命名为 ShowOrHideAllDoneTask

    image.png

    3 把代码块保存为可调用方法

    image.png

    4 添加新的 js 代码片段(注意是设置/外观/代码片段,不是编辑器里的代码块),代码片段中输入以下代码即可

    runJs.plugin.call('ShowOrHideAllDoneTask', 'load')

    image.png

    好滴,不说都没发现
    5kyfkr
    @5kyfkr 注意,第 4 步一般情况下没有问题,如果频繁失效的话,可以用这段代码放到 js 代码片段中 https://pipe.b3log.org/blogs/wilsons/articles/2025/04/01/1743459076732#toc_h2_6 然后把其中的 runJs.siyuan.showMessage("Hello!");换成 runJs.plugin.call('ShowOrHideAllDoneTask', 'load')即可。
    wilsons
    @wilsons 好滴,我这第四步感觉没什么问题,先收藏了
    5kyfkr

推荐标签 标签

  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    210 引用 • 2040 回帖 • 2 关注
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 393 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    93 引用 • 901 回帖
  • Word
    13 引用 • 40 回帖
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    84 引用 • 324 回帖
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    410 引用 • 3588 回帖
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    28 引用 • 226 回帖 • 135 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 495 关注
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 175 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    245 引用 • 1338 回帖
  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    5 引用 • 34 回帖 • 1 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    77 引用 • 389 回帖
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖
  • SpaceVim

    SpaceVim 是一个社区驱动的模块化 vim/neovim 配置集合,以模块的方式组织管理插件以
    及相关配置,为不同的语言开发量身定制了相关的开发模块,该模块提供代码自动补全,
    语法检查、格式化、调试、REPL 等特性。用户仅需载入相关语言的模块即可得到一个开箱
    即用的 Vim-IDE。

    3 引用 • 31 回帖 • 116 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    335 引用 • 324 回帖
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 15 关注
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 608 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 638 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 3 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 83 关注