Estou tentando substituir o valor da tag de estilo embutido de um elemento. O elemento atual se parece com isto:
`<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">`
e eu gostaria de remover todas essas coisas de estilo para que seja estilizado por sua classe em vez de seu estilo embutido. Eu tentei excluir element.style; e element.style = null; e element.style = ""; para nenhum proveito. Meu código atual quebra com essas declarações. Toda a função se parece com:
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");
}
o clearInterval funciona, mas o alerta nunca dispara e o plano de fundo permanece o mesmo. Alguém viu algum problema? Desde já, obrigado...
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
Danwoods
fonte
fonte
Respostas:
você pode apenas fazer:
fonte
element.style.cssText = null
, que faz quase o mesmo.style
atributo vazioEm JavaScript:
Em jQuery:
fonte
Invalid argument
ou fazer com que o elemento desapareça totalmente no IE> = 9. A configuraçãogetElementById("id").style.display = ''
, sendo a string vazia, parece funcionar em todos os navegadores.$("#id").css('display', '');
$("#id").css('display','none');
CSSStyleDeclaration.removeProperty()
que imho é muito mais limpo do que uma atribuição nula. Consulte developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/…se você estiver usando jQuery então
fonte
O atributo class pode conter vários estilos, então você pode especificá-lo como
e fazer manipulação de string para remover 'destaque' de element.className
Usar jQuery tornaria isso mais simples, pois você tem os métodos
que permitiria alternar o destaque facilmente
fonte
Usar
particular_node.classList.remove("<name-of-class>")
Para javascript nativo
fonte
Em jQuery, você pode usar
fonte
Removendo completamente o estilo, não apenas definido como NULL
fonte
Remover removeProperty
fonte