如何将所有计算出的样式设置为元素上的文字样式?

时间:2018-06-26 15:50:02

标签: javascript jquery css styles

这个问题(我认为)类似于SO上的这个问题:How to move all computed CSS styles from one element and apply them to a different element using JavaScript?

我想做的是找到所有通过CSS工作表应用的样式,并在元素上显式设置(如使用style =属性一样)。我要这样做的原因是,如果我在其中打开样式,MS Word(2010)将会采用该样式

这是我的代码

var $this = $(this);
var styles = window.getComputedStyle(this, null);
$this.css(styles);

我也尝试过

var styles = document.defaultView.getComputedStyle(this, null);

当我尝试捕获最后一行($ this.css(styles)时,我收到一条错误消息“无效的调用对象”。我不明白问题出在哪里

1 个答案:

答案 0 :(得分:1)

嗯,下面的代码片段可以满足您的需求,尽管我认为这不是您所需要的。 MS Word不是浏览器,我不确定它是否支持所有样式或jQuery是否可以在其中工作...

var $this = $('b');
var styles = window.getComputedStyle($this[0]);

$this.css(
  Object.values(styles).reduce(
    (a, e) => 0*(a[e] = styles[e]) || a, {}
  )
)

console.log(`style="${$this.attr('style')}"`)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<b>I have styles</b>