我想将属性列表发送到一个函数,该函数将通过注释临时禁用这些属性。这个目的类似于Chrome Dev Tools在检查元素样式时所实现的功能,不同之处在于用户不会勾选/取消勾选框,而是由JavaScript执行此操作。
当元素被创建时,它们的样式嵌入在HTML中而不是外部CSS文件中。重要的是属性只是暂时禁用;它们以前的值必须保留。
更新: 我认为我的注释代码没有起作用,因为我试图通过请求
下面的代码是可行的,但我相信它可以被整理一下。如果您有关于如何改进此代码的建议,请告诉我。这里是一个演示我如何使用该代码的fiddle示例。
function disableProperties(el, properties) {
var property; // property value pair
var cssStr = el.style.cssText.replace(/; /g, ";");
for (let i = 0; i < properties.length; i++) {
property = properties[i] + ": " + eval("el.style." + properties[i]) + ";";
cssStr = cssStr.replace(property, "/* " + property + " */");
}
el.setAttribute("style", cssStr);
}
function restoreProperties(el, properties) {
var outHtml = el.outerHTML;
var key = 'style="';
var idx1 = outHtml.indexOf(key) + key.length;
var idx2 = outHtml.indexOf('"', idx1);
var style = outHtml.substring(idx1, idx2);
for (let i = 0; i < properties.length; i++) {
str = "/* " + properties[i];
let a = style.indexOf(str);
let b = style.indexOf(" */", a + a.length) + 3;
let comment = style.substring(a, b);
let property = (comment).replace("/*", "").replace("*/", "");
style = style.replace(comment, property);
}
el.style.cssText = style;
}
当元素被创建时,它们的样式嵌入在HTML中而不是外部CSS文件中。重要的是属性只是暂时禁用;它们以前的值必须保留。
更新: 我认为我的注释代码没有起作用,因为我试图通过请求
el.style.cssText
来检索注释;但是,注释只能通过outerHTML
获得。下面的代码是可行的,但我相信它可以被整理一下。如果您有关于如何改进此代码的建议,请告诉我。这里是一个演示我如何使用该代码的fiddle示例。