Estoy intentando reemplazar el valor de la etiqueta de estilo en línea de un elemento. El elemento actual se ve así:
`<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">`
y me gustaría eliminar todas esas cosas de estilo para que tenga el estilo de su clase en lugar de su estilo en línea. He intentado eliminar element.style; y element.style = null; y element.style = ""; en vano. Mi código actual se rompe en esta declaración. Toda la función se ve así:
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 funciona, pero la alerta nunca se activa y el fondo permanece igual. ¿Alguien ve algún problema? Gracias por adelantado...
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
fuente
fuente
Respuestas:
solo puedes hacer:
fuente
element.style.cssText = null
, que hace lo mismo.style
atributo vacíoEn JavaScript:
En jQuery:
fuente
Invalid argument
o hacer que el elemento desaparezca por completo en IE> = 9. La configuracióngetElementById("id").style.display = ''
, que es la cadena vacía, parece funcionar en todos los navegadores.$("#id").css('display', '');
$("#id").css('display','none');
CSSStyleDeclaration.removeProperty()
que en mi humilde opinión es mucho más limpio que una asignación nula. Ver developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/…si estás usando jQuery entonces
fuente
El atributo de clase puede contener varios estilos, por lo que puede especificarlo como
y realice la manipulación de cadenas para eliminar 'resaltar' de element.className
Usar jQuery haría esto más simple ya que tiene los métodos
que le permitiría alternar el resaltado fácilmente
fuente
Utilizar
particular_node.classList.remove("<name-of-class>")
Para javascript nativo
fuente
En jQuery, puede usar
fuente
Elimina completamente el estilo, no solo se establece en NULL
fuente
Eliminar removeProperty
fuente