danwoods
danwoods

Reputation: 4907

Removing HTML element styles via JavaScript

I'm trying to replace an element's inline style tag value. The current element looks like this:

`<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">`

and I'd like to remove all that style stuff so that it's styled by it's class rather than it's inline style. I've tried delete element.style; and element.style = null; and element.style = ""; to no avail. My current code breaks at these statement. The whole function looks like:
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");
}

the clearInterval works but the alert never fires and the background stays the same. What's the problem?


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");
}

Upvotes: 99

Views: 242155

Answers (8)

Balaji
Balaji

Reputation: 10887

Remove 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>

Upvotes: 5

Vitalicus
Vitalicus

Reputation: 1379

Completly removing style, not only set to NULL

document.getElementById("id").removeAttribute("style")

Upvotes: 2

Almhar
Almhar

Reputation: 21

In jQuery, you can use

$(".className").attr("style","");

Upvotes: 2

cloudhead
cloudhead

Reputation: 15343

you can just do:

element.removeAttribute("style")

Upvotes: 200

Shishir Arora
Shishir Arora

Reputation: 5923

Use

particular_node.classList.remove("<name-of-class>")

For native javascript

Upvotes: 4

Sergio
Sergio

Reputation: 1043

In JavaScript:

document.getElementById("id").style.display = null;

In jQuery:

$("#id").css('display',null);

Upvotes: 77

gapple
gapple

Reputation: 3474

The class attribute can contain multiple styles, so you could specify it as

<tr class="row-even highlight">

and do string manipulation to remove 'highlight' from element.className

element.className=element.className.replace('hightlight','');

Using jQuery would make this simpler as you have the methods

$("#id").addClass("highlight");
$("#id").removeClass("hightlight");

that would enable you to toggle highlighting easily

Upvotes: 5

Rony
Rony

Reputation: 9511

getElementById("id").removeAttribute("style");

if you are using jQuery then

$("#id").removeClass("classname");

Upvotes: 12

Related Questions