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");
}
vous pouvez juste faire:
element.removeAttribute("style")
En JavaScript:
document.getElementById("id").style.display = null;
Dans jQuery:
$("#id").css('display',null);
getElementById("id").removeAttribute("style");
si vous utilisez jQuery alors
$("#id").removeClass("classname");
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
Utilisation
particular_node.classList.remove("<name-of-class>")
Pour le javascript natif
Dans jQuery, vous pouvez utiliser
$(".className").attr("style","");