在office-js中,当我创建脚注时,它返回一个Word.NoteItem对象,但似乎没有任何明显的方法来获取脚注的索引。
const footnote = range.insertFootnote();
// How do I know if it's footnote #5 or #4 or some other number?
本质上,当我在文档中插入脚注时,我想获取添加到文档中的数字(上标),以便我知道它是哪个脚注。
唯一可行的方法是加载文档中的所有脚注并循环遍历所有脚注,但这在性能方面确实很差。
例如:
const footnotes = context.document.body.footnotes.load("items");
context.sync();
footnotes.items.forEach(x => ...);
每次插入脚注时都必须执行此操作,这对性能来说并不是很好,因为我们预计应用程序中会有数百个脚注。
要将唯一 ID 与每个脚注关联,请尝试以下操作:
具有数组和计数器的全局变量:
const myFootnotes = [];
let latestFixedFootnoteID = 1;
每当代码创建一个新的脚注时,它都会将该对象与父对象中的固定想法配对,然后将该父对象推入数组,同时递增计数器。
const footnote = range.insertFootnote();
myFootnotes.push( { latestFixedFootnoteID++, footnote });
或者,使用 JavaScript Map 对象(而不是
map()
函数)。使用 Map 的一个优点是键不必是字符串,因此您在创建新脚注时可以使用 latestFixedFootnoteID
作为键名称。
let latestFixedFootnoteID = 1;
const myFootnotes = new Map();
...
const footnote = range.insertFootnote();
myFootnotes.set(latestFixedFootnoteID++, footnote);
如果你想给你的朋友留下深刻的印象,请将计数器初始化为 0,然后通过在变量名称的开头放置“++”来预递增计数器:
++latestFixedFootnoteID
。