J'essaye de remplacer la valeur de 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 tous ces éléments de style afin qu'ils soient stylisés par leur classe plutôt que par leur style en ligne. J'ai essayé de supprimer element.style; et element.style = null; et element.style = ""; en vain. Mon code actuel rompt à 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 voit-il 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");
}
javascript
html
dom
styles
Danwoods
la source
la source
Réponses:
vous pouvez simplement faire:
la source
element.style.cssText = null
, qui fait à peu près la même chose.style
attribut videEn JavaScript:
Dans jQuery:
la source
Invalid argument
ou faire disparaître complètement l'élément dans IE> = 9. Le paramètregetElementById("id").style.display = ''
, étant la chaîne vide, semble fonctionner dans tous les navigateurs.$("#id").css('display', '');
$("#id").css('display','none');
CSSStyleDeclaration.removeProperty()
qui à mon humble avis est beaucoup plus propre qu'une affectation nulle. Voir developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/…si vous utilisez jQuery alors
la source
L'attribut class peut contenir plusieurs styles, vous pouvez donc le spécifier comme
et faites une manipulation de chaîne pour supprimer 'highlight' de element.className
L'utilisation de jQuery rendrait cela plus simple car vous avez les méthodes
cela vous permettrait de basculer facilement la mise en évidence
la source
Utilisation
particular_node.classList.remove("<name-of-class>")
Pour javascript natif
la source
Dans jQuery, vous pouvez utiliser
la source
Suppression complète du style, non seulement défini sur NULL
la source
Supprimer removeProperty
la source