最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Append Style to DOM not Replacing Existing - Stack Overflow

programmeradmin2浏览0评论

How can I append style element to DOM without eliminating existing style on the item (eg color, text-align, etc)?

The event calls the function, but the problem is 'Style' gets completely replaced with the single item instead.

I have simple code triggered on the event:

function changeback(onoff) {
   if(onoff) {
      document.getElementById("field1").style.background="#fff";
   } else            
      document.getElementById("field1").style.background="#000";
}

How can I append style element to DOM without eliminating existing style on the item (eg color, text-align, etc)?

The event calls the function, but the problem is 'Style' gets completely replaced with the single item instead.

I have simple code triggered on the event:

function changeback(onoff) {
   if(onoff) {
      document.getElementById("field1").style.background="#fff";
   } else            
      document.getElementById("field1").style.background="#000";
}
Share Improve this question edited Feb 7, 2021 at 21:31 Brian Tompsett - 汤莱恩 5,88372 gold badges61 silver badges133 bronze badges asked Sep 16, 2010 at 3:04 Codex73Codex73 5,76613 gold badges57 silver badges77 bronze badges 1
  • 1 That code is not the issue. Unless you are saying the other background properties are being overwritten, that code should NOT affect other properties of the Element's style object. – Randy the Dev Commented Sep 22, 2010 at 10:45
Add a comment  | 

2 Answers 2

Reset to default 10

Here is how you can do it :

var elem = document.getElementById('YOUR ELEMENT ID');
elem.style.setProperty('border','1px solid black','');

elem.style is an object implementing the CSSStyleDeclaration interface which supports a setProperty function. If you check the style property in Firebug now, you will notice addition of the border property within the style attribute of the element.

Which browser are you using? In Chrome, this works for me:

<html> 
<head> 
<style type="text/css"> 
  .test { background: #ff0000; font-family: "Verdana"; }
</style> 
<script type="text/javascript"> 
  function changeback(onoff)
  {
    if(onoff){
      document.getElementById("field1").style.background="#0f0";
    } else {
      document.getElementById("field1").style.background="#000";
    }
  }
 </script> 
 </head> 
 <body> 
   <h1>Test</h1> 
   <p id="field1" onclick="changeback(true);" class="test">This is a test</p> 
</body> 
</html> 

When I click on the text, the background color changes, but the rest of the style (in this case, the font) stays the same.

Is that what you're trying to do?

发布评论

评论列表(0)

  1. 暂无评论