web-dev-qa-db-fra.com

supprimer les styles d'élément html via javascript

J'essaie de remplacer la valeur de la balise de style en ligne d'un élément. L'élément actuel ressemble à ceci:

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

et j'aimerais supprimer tout ce style pour qu'il soit stylé par classe plutôt que par style. J'ai essayé de supprimer element.style; et element.style = null; et element.style = ""; en vain. Mon code actuel se casse à ces instructions. La fonction entière ressemble à:
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 fonctionne, mais l'alerte ne se déclenche jamais et l'arrière-plan reste le même. Quelqu'un a vu des problèmes? Merci d'avance...


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

vous pouvez juste faire:

element.removeAttribute("style")
161
cloudhead

En JavaScript:

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

Dans jQuery:

$("#id").css('display',null);
62
Sergio
getElementById("id").removeAttribute("style");

si vous utilisez jQuery alors

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

L’attribut class peut contenir plusieurs styles, vous pouvez donc le spécifier comme suit:

<tr class="row-even highlight">

et faire la manipulation de chaîne pour supprimer 'le surlignage' de element.className

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

Utiliser jQuery rendrait cela plus simple car vous avez les méthodes

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

cela vous permettrait de basculer facilement en surbrillance

4
gapple

Utilisation

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

Pour le javascript natif

3
Shishir Arora

Dans jQuery, vous pouvez utiliser

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