Javascript:获取样式定义不正确的元素的内容

标签 javascript css

我正在为某个站点创建样式表,使用 javascript 将类分配给某些元素。无论出于何种原因,一些“td”元素使用了奇怪的类分配和内联样式,所以我遍历它们,清理它们并分配适当的类名以在外部样式表中引用。

我无权访问网站本身(也没有更改任何内容的管理权限),所以我使用 Stylish 和 Greasemonkey for Firefox(加上 Adblock 来处理原始样式表)。

这里有一小部分 js 代码负责:

var cellStyleBg = cCell.style.backgroundColor;
if (cellStyleBg) {
switch(cellStyleBg) {
    case 'white':
        cCell.removeAttribute('style');
         if ( cCell.parentNode.nodeName == 'TR' ) {
             cCell.parentNode.className = 'deadlineSet';
         }
         break;
...

问题是在一种特殊情况下这不起作用:

<td class="td2h" style="background: dd97f0;">

如您所见,颜色代码前面没有八 Angular 形。我认为这就是在这种情况下变量 cellStyleBg 为“null”的原因。

我尝试(而不是“cCell.style.backgroundColor”)使用“cCell.style”和“cCell.style.background”,但它们不会返回纯文本供我解析。

我能做些什么来处理这个特殊情况?

最佳答案

我认为唯一的方法是获取样式属性的原始值。 你这样做

//will output background: dd97f0
cCell.getAttribute('style');

如果需要,您可以使用此代码段将样式分解为键值对

//give "background: dd97f0", will output "background=dd97f0"
var stylePattern = /(.*?):([^;]*);?/g
while (match = stylePattern.exec(style)) {
    console.log(match[1].trim() + "=" + match[2].trim());
}

关于Javascript:获取样式定义不正确的元素的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841969/

相关文章:

javascript - 使用 JavaScript 更改文本框背景颜色

c# - 在谷歌地图上绘制多个标记

html - Bootstrap btn-default 不与输入组 div 元素对齐

html - CSS/HTML : Automatically resizing image which is in a circle

javascript - 为什么 ES6 类语法控制台日志记录与 ES5 类语法不同?

javascript - 从n叉树结构的数组中删除一个元素

javascript - jQuery/JavaScript - 在函数中获取点击按钮本身

html - 如何在我的导航栏中设置媒体查询以使其响应移动?

javascript - 使用 JavaScript 更改现有类的值?

css - 将单选标记与其旁边的图像对齐