我在使用思源笔记的数据库来构建一个简单的记账表格。
大概是有 2 个字段,“当前消费”,和,“消费总计”
“消费总计”列是一个“模板”字段,它用于获取上一行的“消费总计”的数值,然后加上当前这一行的“当前消费”,然后自动呈现数值
这里实现遇到的一个问题是,有什么函数可以获取到这个数据库的上一行记录呢?谢谢大家!
我在使用思源笔记的数据库来构建一个简单的记账表格。
大概是有 2 个字段,“当前消费”,和,“消费总计”
“消费总计”列是一个“模板”字段,它用于获取上一行的“消费总计”的数值,然后加上当前这一行的“当前消费”,然后自动呈现数值
这里实现遇到的一个问题是,有什么函数可以获取到这个数据库的上一行记录呢?谢谢大家!
可以通过 img 标签配合 js 实现。
模板代码:
<span><img src="" style="display:none;" onerror="
(async () => {
// 获取当前单元格
const currCell = this.closest('div.av__cell');
// 获取当前行
const currRow = currCell.closest('div.av__row');
// 获取前一个单元格的值
let prevCellValue = 0;
let prevCellColId = '';
const prevCell = currCell.previousElementSibling;
if(prevCell && prevCell.matches('div.av__cell')) {
prevCellValue = parseFloat(prevCell.textContent);
prevCellColId = prevCell.dataset.colId;
}
// 获取前一个单元格的所有前面的单元格的和
let prevPrevCellsTotal = 0;
const prevPrevRows = getPrevSiblings(currRow);
prevPrevRows.forEach(prevPrevRow => {
if(prevPrevRow) {
const prevPrevCell = prevPrevRow.querySelector(`div.av__cell[data-col-id='${prevCellColId}']`);
if(prevPrevCell) {
prevPrevCellsTotal += parseFloat(prevPrevCell.textContent);
}
}
});
// 输出数据
this.parentElement.outerHTML = (prevCellValue + prevPrevCellsTotal).toFixed(2).replace('.00', '') || '';
// 获取所有前面的行
function getPrevSiblings(currRow) {
let siblings = [];
let sibling = currRow.previousElementSibling;
while (sibling) {
// 如果遇到了 div.av__row.av__row--header,则停止查找
if (sibling.tagName.toLowerCase() === 'div' && sibling.classList.contains('av__row--header')) {
break;
}
// 收集 div.av__row 元素
if (sibling.tagName.toLowerCase() === 'div' && sibling.classList.contains('av__row')) {
siblings.push(sibling);
}
sibling = sibling.previousElementSibling;
}
// 因为我们是从下往上添加的,所以最后需要反转数组来保持从上到下的顺序。
return siblings.reverse();
}
})();
" />正在计算...</span>
flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。
人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。
BookxNote 是一款全新的电子书学习工具,助力您的学习与思考,让您的大脑更高效的记忆。
笔记整理交给我,一心只读圣贤书。
JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA。
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
确认过眼神后的灵魂连接,站在链在!
找到自己的位置,萌新烦恼少。
CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。
Open Source, Open Mind, Open Sight, Open Future!
宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。
webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。
JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。
etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。
Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。
以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。
WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。
LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。
Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。
Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。
SQL Server 是由 [微软] 开发和推广的关系数据库管理系统(DBMS),它最初是由 微软、Sybase 和 Ashton-Tate 三家公司共同开发的,并于 1988 年推出了第一个 OS/2 版本。
阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于