我想通过div中的文本来替换“background-color:[whatever];”随着“”发生的地方。基本上,我想删除所有内联背景颜色样式。
似乎是JavaScript的
string.replace(regex,str)
是正确的工具,但正则表达式首先找到“background-color:”,然后将其替换为后续并包含下一个“;”的内容用“”不清楚。
有人可能会朝着正确的方向推动我吗?
由于
答案 0 :(得分:1)
您可以使用以下脚本执行此操作:
var all = document.body.getElementsByTagName('*');
for (var i=0;i<all.length;i++) {
if (all[i].style.backgroundColor) {
all[i].style.backgroundColor = '';
}
}
我通过DOM循环而不是正则表达式的原因是有两个原因:
background-color:#fff;
,还要background-color: /*either #fff; or #000;*/#fff;
,因为可以放置注释那里也是。你需要太多的正则表达式来使它完美地工作,而这个脚本可以帮助你完成所有工作。答案 1 :(得分:1)
我刚刚在JSFiddle中发布了一个快速,纯粹的JS,非正则表达式解决方案。它遍历元素的每个子元素(递归),如果它不是文本节点,则将background-color
设置为transparent
(有效地删除它)。
function removeChildBackgrounds(element) {
var children = element.childNodes;
for(var i = 0; i < children.length; i++) {
var node = children[i];
if(node.nodeName !== '#text') {
node.style.backgroundColor = 'transparent';
if(node.hasChildNodes()) {
removeChildBackgrounds(node);
}
}
}
}
请在此处查看JSFiddle。
<强>链接:强>
答案 2 :(得分:0)
感谢Joey和Sam。
事实证明,乔伊的想法就是我所需要的。在转换为jQuery并利用了cellContent $是execCommand最后工作的外部div并且它总是将background-color放在<span>
元素中的知识之后,它变成了:
cellContent$.find('span')
.each(function() {
if(this.style.background) {
this.style.background = '';
}
});
感谢你们两位!