Javascript Office.js如何将字符样式应用于所选单词

Javascript Office.js如何将字符样式应用于所选单词,javascript,office-js,Javascript,Office Js,抱歉-Javascript和Office.js都是新手,但现在是时候将我的.NET格式功能区转换为跨平台的了。一点学习曲线 我使用我在Addin教程中找到的这个函数,成功地应用了段落样式,但我尝试了调整它(见下文),并且在我了解到完全关闭Addin、退出word并返回并重新加载之前测试更改(非常繁琐)是很重要的,它仍然适用于整个段落的字符样式。Grr function applyemphasisstyle() { Word.run(function (context) {

抱歉-Javascript和Office.js都是新手,但现在是时候将我的.NET格式功能区转换为跨平台的了。一点学习曲线

我使用我在Addin教程中找到的这个函数,成功地应用了段落样式,但我尝试了调整它(见下文),并且在我了解到完全关闭Addin、退出word并返回并重新加载之前测试更改(非常繁琐)是很重要的,它仍然适用于整个段落的字符样式。Grr

function applyemphasisstyle() {
    Word.run(function (context) {

        var pars = context.document.getSelection().paragraphs;
        pars.load();
        return context.sync().then(function () {
            for (var i = 0; i < pars.items.length; i++) {
                pars.items[i].style = "Emphasis";

            }

        return context.sync();
    })
    }) //needed for Stack overflow
    .catch(function (error) {
        console.log("Error: " + error);
        if (error instanceof OfficeExtension.Error) {
            console.log("Debug info: " + JSON.stringify(error.debugInfo));
        }
    });
}

我已尝试删除“.段落” 我已尝试将“.段落”更改为“.单词”等
相同的结果-应用样式,但应用整个段落,而不是所选单词


谢谢你能提供的任何帮助

这段代码对我有用。由于您选择的是单个单词,因此无需循环,而且由于您正在写入style属性而不是读取它,因此无需加载text对象

return Word.run(function(context) {
  var selectedText = context.document.getSelection();
   return context.sync()
   .then(function () {
     selectedText.style = "Emphasis";
   })
});

我建议您使用该工具来计算脚本的逻辑。

Hi Rick,谢谢您的建议答案,不知何故,这对我不起作用-它仍然将字符样式应用于整个段落,而不是所选的单词。我假设我需要在代码前面加上函数调用“function applyemphasisstyle(){并用一个结束括号结束了代码行。是什么导致代码为您工作而不是在我的环境中工作?JavaScript的奥秘…PS我将查看脚本实验室-感谢tipHi Rick-我刚刚再次查看了它,它确实工作了。抱歉。我一定键入了一些错误。抱歉,我花了这么长时间回去吧,但是做这件事要做其他的工作。耶!谢谢。
var pars = context.document.getSelection().getTextRanges;
return Word.run(function(context) {
  var selectedText = context.document.getSelection();
   return context.sync()
   .then(function () {
     selectedText.style = "Emphasis";
   })
});