자바 스크립트를 통해 HTML 요소 스타일 제거


91

요소의 인라인 스타일 태그 값을 바꾸려고합니다. 현재 요소는 다음과 같습니다.

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

인라인 스타일이 아닌 클래스로 스타일이 지정되도록 모든 스타일 항목을 제거하고 싶습니다. element.style 삭제를 시도했습니다. 및 element.style = null; 및 element.style = ""; 아무 소용이 없습니다. 내 현재 코드는 이러한 진술에서 중단됩니다. 전체 함수는 다음과 같습니다.
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은 작동하지만 경고가 발생하지 않고 배경은 동일하게 유지됩니다. 누구든지 문제가 있습니까? 미리 감사드립니다 ...


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

removeAttribute ( "style")를 시도했지만 여전히 운이 없습니다. setInterval을 사용하여 배경색을 순환하여 펄스 효과를 만들려고합니다. 답 4를 시도하기 위해 다른 스타일 클래스를 작성해 보겠습니다. 다른 아이디어가 있습니까? 내 현재 코드는 ... 아래에 게시됩니다
danwoods

당신이 동의한다면 그것은 좋지 않을까 이 질문에 대한 정답으로
CARAMBA

^ 그래도 정답은 아닙니다.
Evan Hendler 2017-06-23

답변:


183

당신은 할 수 있습니다 :

element.removeAttribute("style")

51
또는 element.style.cssText = null, 거의 동일합니다.
mrec

4
@mrec 정확히 동일하지 않습니다. 귀하의 경우 요소에는 여전히 빈 style속성이 있습니다
user

5
이것은 OP의 질문에 대한 대답입니다. 모든 인라인 스타일을 제거하고 스타일 시트 규칙으로 대체하지만, 모든 인라인 스타일을 날려 버립니다. 인라인 스타일에서 규칙을 선택적으로 제거하려면 아래 @sergio의 답변 (실제로 해당 답변에 대한 davidjb의 의견)이 더 유용합니다.
ericsoco 2015

72

JavaScript에서 :

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

jQuery에서 :

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

15
코드의 첫 번째 줄은 Internet Explorer (<9)에서 오류가 발생 Invalid argument하거나 IE> = 9에서 요소가 완전히 사라지는 getElementById("id").style.display = ''것으로 나타납니다. 빈 문자열 인 Setting 은 브라우저에서 작동하는 것으로 보입니다.
davidjb

2
jQuery를에 스타일을 제거하는 올바른 방법입니다$("#id").css('display', '');
Oiva Eskola

이것은 나를 닫았지만 null이 아니었지만 'none'이 작동했습니다. 예$("#id").css('display','none');
Aaron

2
display : none은이 질문이나 답변과 아무 관련이 없습니다. 그것은 요소를 숨기기위한 것입니다.
JasonWoof

1
또한 CSSStyleDeclaration.removeProperty()어떤 imho가 널 할당보다 훨씬 더 깔끔합니다. developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/…
Sjeiti

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

jQuery를 사용하는 경우

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

4
이 두 코드 조각은 매우 다른 작업을 수행합니다. 첫 번째 사람 만이 질문과 관련이 있습니다.
JasonWoof

5

클래스 속성은 여러 스타일을 포함 할 수 있으므로 다음과 같이 지정할 수 있습니다.

<tr class="row-even highlight">

element.className에서 'highlight'를 제거하는 문자열 조작을 수행하십시오.

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

jQuery를 사용하면 메소드가 있으므로 이것을 더 간단하게 만들 수 있습니다.

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

강조 표시를 쉽게 전환 할 수 있습니다.


스타일 시트에서 .highlight를 정의하는 또 다른 이점은 CSS 한 줄만 변경하고 Javascript를 전혀 변경하지 않고 "하이라이트"가 표시되는 방식을 정확하게 변경할 수 있다는 것입니다. JQuery를 사용 하지 않는 경우 에도 클래스 추가 및 제거는 매우 간단합니다. / * on * / theElement.className + = 'highlight'; / * off * / theElement.className = theElement.className.replace (/ \ b \ s * highlight \ b /, ''); (CSS에서 .element를 정의하면 자동으로 모든 곳 에서 동일하게 유지됩니다 .)
Chuck Kollars

죄송합니다. 가능성 클래스가 두 번 이상 지정되었습니다. 이 경우도 처리하려면 정규식에 'g'플래그를 추가하십시오. theElement.className = theElement.className.replace (/ \ / b \ s * highlight \ b / g, '');
Chuck Kollars

대신 클래스 이름의 classlist 노드 속성 사용
Shishir 아 로라


2

jQuery에서 다음을 사용할 수 있습니다.

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

1

NULL로 설정하는 것뿐만 아니라 스타일을 완전히 제거

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

0

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>

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.