Я пытаюсь заменить значение тега встроенного стиля элемента. Текущий элемент выглядит так:
`<tr class="row-even" style="background: red none repeat scroll 0% 0%; position: relative; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" id="0000ph2009-06-10s1s02">`
и я хотел бы удалить все эти стилевые элементы, чтобы они были стилизованы под его класс, а не на встроенный стиль. Я пробовал удалить element.style; и element.style = null; и element.style = ""; но безрезультатно. Мой текущий код ломается в этом заявлении. Вся функция выглядит так:
function unSetHighlight (index) {
if(index < 10)
index = "000" + (index);
else if (index < 100)
index = "000" + (index);
else if(index < 1000)
index = "0" + (index);
if(index >= 1000)
index = index;
var mainElm = document.getElementById('active_playlist');
var elmIndex = "";
for(var currElm = mainElm.firstChild; currElm !== null; currElm = currElm.nextSibling){
if(currElm.nodeType === 1){
var elementId = currElm.getAttribute("id");
if(elementId.match(/\b\d{4}/)){
elmIndex = elementId.substr(0,4);
if(elmIndex == index){
var that = currElm;
//that.style.background = position: relative;
}
}
}
}
clearInterval(highlight);
alert("cleared Interval");
that.style.background = null;
alert("unSet highlight called");
}
clearInterval работает, но предупреждение никогда не срабатывает, а фон остается прежним. Кто-нибудь видит какие-либо проблемы? Заранее спасибо...
function unSetHighlight(index){
alert(index);
if(index < 10)
index = "000" + (index);
else if (index < 100)
index = "000" + (index);
else if(index < 1000)
index = "0" + (index);
if(index >= 1000)
index = index;
var mainElm = document.getElementById('active_playlist');
var elmIndex = "";
for(var currElm = mainElm.firstChild; currElm !== null; currElm = currElm.nextSibling){
if(currElm.nodeType === 1){
var elementId = currElm.getAttribute("id");
if(elementId.match(/\b\d{4}/)){
elmIndex = elementId.substr(0,4);
alert("elmIndex = " + elmIndex + "index = " + index);
if(elmIndex === index){
var that = currElm;
alert("match found");
}
}
}
}
clearInterval(highlight);
alert("cleared Interval");
that.removeAttribute("style");
//that.style.position = "relative";
//reColor();
alert("unSet highlight called");
}
javascript
html
dom
styles
Дэнвудс
источник
источник
Ответы:
вы можете просто сделать:
element.removeAttribute("style")
источник
element.style.cssText = null
, что делает то же самое.style
атрибутВ JavaScript:
document.getElementById("id").style.display = null;
В jQuery:
$("#id").css('display',null);
источник
Invalid argument
либо на полное исчезновение элемента в IE> = 9. ПараметрgetElementById("id").style.display = ''
, являющийся пустой строкой, работает во всех браузерах.$("#id").css('display', '');
$("#id").css('display','none');
CSSStyleDeclaration.removeProperty()
что imho намного чище, чем нулевое присвоение. См developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/...getElementById("id").removeAttribute("style");
если вы используете jQuery, тогда
$("#id").removeClass("classname");
источник
Атрибут class может содержать несколько стилей, поэтому вы можете указать его как
<tr class="row-even highlight">
и выполните манипуляции со строкой, чтобы удалить «выделение» из element.className
element.className=element.className.replace('hightlight','');
Использование jQuery упростит это, поскольку у вас есть методы
$("#id").addClass("highlight"); $("#id").removeClass("hightlight");
это позволит вам легко переключать выделение
источник
Использовать
particular_node.classList.remove("<name-of-class>")
Для нативного javascript
источник
В jQuery вы можете использовать
$(".className").attr("style","");
источник
Полное удаление стиля, а не только значение NULL
document.getElementById("id").removeAttribute("style")
источник
Удалить removeProperty
var el=document.getElementById("id"); el.style.removeProperty('display') console.log("display removed"+el.style["display"]) console.log("color "+el.style["color"])
<div id="id" style="display:block;color:red">s</div>
источник