Próbuję zastąpić wartość tagu stylu wbudowanego elementu. Bieżący element wygląda następująco:
`<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">`
i chciałbym usunąć wszystkie te elementy stylu, aby był stylizowany na podstawie swojej klasy, a nie stylu wbudowanego. Próbowałem usunąć element.style; i element.style = null; i element.style = ""; bezskutecznie. Mój obecny kod psuje się w tej instrukcji. Cała funkcja wygląda następująco:
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");
}
funkcja clearInterval działa, ale alert nigdy nie jest uruchamiany, a tło pozostaje takie samo. Czy ktoś widzi jakieś problemy? Z góry dziękuję...
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
źródło
źródło
Odpowiedzi:
możesz po prostu zrobić:
element.removeAttribute("style")
źródło
element.style.cssText = null
, która robi to samo.style
atrybutW JavaScript:
document.getElementById("id").style.display = null;
W jQuery:
$("#id").css('display',null);
źródło
Invalid argument
lub całkowite zniknięcie elementu w IE> = 9. UstawieniegetElementById("id").style.display = ''
, będące pustym ciągiem, wydaje się działać w różnych przeglądarkach.$("#id").css('display', '');
$("#id").css('display','none');
CSSStyleDeclaration.removeProperty()
które imho jest dużo czystsze niż przypisanie zerowe. Zobacz developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/…getElementById("id").removeAttribute("style");
jeśli używasz jQuery to
$("#id").removeClass("classname");
źródło
Atrybut class może zawierać wiele stylów, więc możesz określić go jako
<tr class="row-even highlight">
i wykonaj operację na ciągach znaków, aby usunąć „wyróżnienie” z elementu nazwa_klasy
element.className=element.className.replace('hightlight','');
Użycie jQuery uprościłoby to, ponieważ masz metody
$("#id").addClass("highlight"); $("#id").removeClass("hightlight");
które umożliwiłyby łatwe przełączanie podświetlania
źródło
Posługiwać się
particular_node.classList.remove("<name-of-class>")
Dla natywnego javascript
źródło
W jQuery możesz użyć
$(".className").attr("style","");
źródło
Całkowicie usuwam styl, nie tylko ustawiony na NULL
document.getElementById("id").removeAttribute("style")
źródło
Usuń 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>
źródło