当我这样做时,我正在用js修改元素溢出:
document.body.style.overflow = 'hidden';
元素变为:
<body style="overflow: hidden;"></body>
之后我想将元素转回:
<body style=""></body>
我不想将溢出更改为任何内容,只需从元素样式中删除溢出,以便它回退到style.css。我试过了:
document.body.style.overflow = '';
哪个什么都不做。怎么办呢?
答案 0 :(得分:3)
你可以这样做
document.body.setAttribute('style','');
答案 1 :(得分:1)
只需清除style
属性,如下所示:
document.body.setAttribute("style", "");
请记住,CSS可以来自许多部分(样式属性,外部样式表,HTML标记和javascript)!
答案 2 :(得分:1)
假设您只是尝试更改当前属性(即使只是取消设置),这也会导致问题。问题似乎是空字符串不被视为CSS属性的合法值,因此不会添加到style
属性。
在Chromium中,这可以解决,但只能明确声明属性的新值,即使只使用auto
关键字。考虑到这一点,下面有一种方法:
var propStates = {
// define the states, I'm only using two for a 'toggle'
// approach, adjust to taste.
'overflow': ['hidden', 'auto'],
'display': ['block', 'auto']
}
function removeCSSProperty(el, prop) {
if (!el || !prop) {
return false;
}
else {
// el can be either a node-reference *or* a string containing
// the id of the element to adjust
el = el.nodeType == 1 ? el : document.getElementById(el);
var current = window.getComputedStyle(el, null)[prop];
el.style[prop] = propStates[prop][0] == current ? propStates[prop][1] : propStates[prop][0];
}
}
document.getElementById('adjust').onclick = function() {
removeCSSProperty('test', 'overflow');
};
这种方法要求浏览器理解window.getComputedStyle()
函数,IE&lt; 9 不支持(虽然它确实有currentStyle
实际上看起来大致相同)