xóa các kiểu phần tử html thông qua javascript


91

Tôi đang cố gắng thay thế giá trị thẻ kiểu nội tuyến của một phần tử. Phần tử hiện tại trông giống như sau:

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

và tôi muốn xóa tất cả những thứ mang phong cách đó để nó được tạo kiểu theo đẳng cấp hơn là kiểu nội tuyến. Tôi đã thử xóa element.style; và element.style = null; và element.style = ""; không có kết quả. Mã hiện tại của tôi bị hỏng tại câu lệnh này. Toàn bộ hàm trông giống như:
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 hoạt động nhưng cảnh báo không bao giờ kích hoạt và nền vẫn như cũ. Có ai thấy vấn đề gì không? Cảm ơn trước...


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

Đã thử removeAttribute ("style"), vẫn không thành công. Tôi đang sử dụng setInterval để chuyển qua các màu nền để (cố gắng) tạo hiệu ứng xung. Tôi sẽ thử viết lên một số lớp phong cách khác để thử câu trả lời 4. Có ý kiến ​​nào khác không? Mã hiện tại của tôi được đăng dưới đây ...
danwoods

nó sẽ là tuyệt vời nếu bạn có thể chấp nhận này là câu trả lời đúng cho câu hỏi này
Caramba

^ Tuy nhiên, nó không phải là câu trả lời đúng.
Evan Hendler

Câu trả lời:


183

bạn chỉ có thể làm:

element.removeAttribute("style")

51
Hoặc element.style.cssText = null, cái nào cũng tương tự.
mrec

4
@mrec không hoàn toàn giống nhau, trong trường hợp của bạn, một phần tử vẫn có stylethuộc tính trống
người dùng

5
Điều này trả lời câu hỏi của OP - loại bỏ tất cả các kiểu nội tuyến và dự phòng cho các quy tắc biểu định kiểu, nhưng ... nó cũng loại bỏ tất cả các kiểu nội tuyến. Nếu bạn muốn xóa có chọn lọc các quy tắc khỏi các kiểu nội tuyến, câu trả lời của @ sergio bên dưới (thực tế là nhận xét của davidjb về câu trả lời đó) hữu ích hơn.
ericsoco

72

Trong JavaScript:

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

Trong jQuery:

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

15
Dòng mã đầu tiên xuất hiện lỗi trong Internet Explorer (<9) Invalid argumenthoặc khiến phần tử biến mất hoàn toàn trong IE> = 9. Cài đặt getElementById("id").style.display = '', là chuỗi trống, dường như hoạt động trên các trình duyệt.
davidjb

2
trong jQuery cách chính xác để loại bỏ một phong cách$("#id").css('display', '');
Oiva Eskola

Đây đã cho tôi gần gũi, nhưng nó không phải là null, nhưng 'không' mà làm việc, ví dụ như$("#id").css('display','none');
Aaron

2
hiển thị: không có gì liên quan đến câu hỏi hoặc câu trả lời này. Đó là để ẩn các phần tử.
JasonWoof

1
Ngoài ra CSSStyleDeclaration.removeProperty(), imho còn sạch hơn rất nhiều so với một nhiệm vụ rỗng. Xem developer.mozilla.org/en-US/docs/Web/API/CSSStyleDecosystem/…
Sjeiti

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

nếu bạn đang sử dụng jQuery thì

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

4
Hai đoạn mã đó làm những điều cực kỳ khác nhau. Chỉ cái đầu tiên có liên quan đến câu hỏi.
JasonWoof

5

Thuộc tính lớp có thể chứa nhiều kiểu, vì vậy bạn có thể chỉ định nó là

<tr class="row-even highlight">

và thực hiện thao tác chuỗi để xóa 'đánh dấu' khỏi element.className

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

Sử dụng jQuery sẽ làm cho việc này đơn giản hơn khi bạn có các phương thức

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

điều đó sẽ cho phép bạn chuyển đổi dễ dàng đánh dấu


Một ưu điểm khác của việc xác định .highlight trong style sheet của bạn là bạn có thể thay đổi chính xác cách hiển thị "highlight" bằng cách chỉ thay đổi một dòng CSS và không thực hiện bất kỳ thay đổi Javascript nào. Nếu bạn không sử dụng JQuery, việc thêm và xóa một lớp vẫn khá đơn giản: / * on * / theElement.className + = 'highlight'; / * tắt * / theElement.className = theElement.className.replace (/ \ b \ s * highlight \ b /, ''); (Bằng cách xác định .element trong CSS, nó cũng tự động giống nhau ở mọi nơi.)
Chuck Kollars

Rất tiếc, lớp khả năng quên được chỉ định nhiều lần. Để xử lý trường hợp đó, hãy thêm cờ 'g' vào biểu thức chính quy: theElement.className = theElement.className.replace (/ \ / b \ s * highlight \ b / g, '');
Chuck Kollars

sử dụng tài sản nút classlist thay vì className
Shishir Arora

4

Sử dụng

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

Đối với javascript gốc


2

Trong jQuery, bạn có thể sử dụng

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

1

Hoàn toàn xóa kiểu, không chỉ được đặt thành NULL

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

0

Loại bỏ 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>

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.