JavaScript操作表格及CSS样式
<h2><span style="color: rgba(51, 153, 102, 1)">概述</span></h2><p>在前端开发中,表格主要用于存储结构化的数据,CSS主要用于修饰DOM元素,如何通过DOM来操作表格及CSS呢?本文主要通过一些简单的小例子,简述DOM对表格和CSS的常见操作方法,仅供学习分享使用,如有不足之处,还请指正。</p>
<h2><span style="color: rgba(51, 153, 102, 1)">获取表格及数据</span></h2>
<p>假如当前有一个表格,id为tb01,如下所示:</p>
<div class="cnblogs_code"><img id="code_img_closed_422f8a2a-e9b6-4051-83e4-003c1ff29aaa" class="code_img_closed lazyload" alt="" data-src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif"><img id="code_img_opened_422f8a2a-e9b6-4051-83e4-003c1ff29aaa" class="code_img_opened lazyload" style="display: none" alt="" data-src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif">
<div id="cnblogs_code_open_422f8a2a-e9b6-4051-83e4-003c1ff29aaa" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">table </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="tb01"</span><span style="color: rgba(255, 0, 0, 1)"> width</span><span style="color: rgba(0, 0, 255, 1)">="300"</span><span style="color: rgba(255, 0, 0, 1)"> border</span><span style="color: rgba(0, 0, 255, 1)">="1"</span><span style="color: rgba(255, 0, 0, 1)"> cellspacing</span><span style="color: rgba(0, 0, 255, 1)">="2"</span><span style="color: rgba(255, 0, 0, 1)"> cellpadding</span><span style="color: rgba(0, 0, 255, 1)">="2"</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">caption</span><span style="color: rgba(0, 0, 255, 1)">></span>人员表<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">caption</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">thead</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>姓名<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>性别<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>年龄<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">thead</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tbody</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>Tom<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>boy<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>20<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>Jack<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>girl<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>19<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tbody</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tfoot</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">23</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">td </span><span style="color: rgba(255, 0, 0, 1)">colspan</span><span style="color: rgba(0, 0, 255, 1)">="3"</span><span style="color: rgba(0, 0, 255, 1)">></span>合计:2<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">td</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tr</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">tfoot</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">table</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>获取表格的标题,表头,内容,表尾,行数,某一行的列数等等,如下所示:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">var</span> table=document.getElementById('tb01'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> alert(table.caption.innerText);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取标题文本</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> alert(table.tHead);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取表头,输出</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> alert(table.tBodies);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取tbody 输出:</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> alert(table.tFoot);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取表尾,输出</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> alert(table.rows.length);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">得到行数 4行</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> alert(table.tBodies.rows.length);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取tbody下有多少行 ,2行</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> alert(table.tBodies.rows.cells.length);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取对应行有几列,,3列</span></pre>
</div>
<p>获取单元格里面的内容,如下所示:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> alert(table.tBodies.rows.cells.innerHTML);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取tody下第二行第二列的内容 输出:girl</span></pre>
</div>
<p>如何删除表格中的标题,表头,表尾,某行,某个单元格,等内容,如下所示:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> table.deleteCaption();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除标题 </span>
<span style="color: rgba(0, 128, 128, 1)">2</span> table.deleteTHead();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除表头</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> table.deleteTFoot();<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除表尾</span>
<span style="color: rgba(0, 128, 128, 1)">4</span> table.tBodies.deleteRow(0);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除tbody第0行</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> table.tBodies.rows.deleteCell(1);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除tbody第0行的第1列,右侧单元格前移</span></pre>
</div>
<h2><span style="color: rgba(51, 153, 102, 1)">创建表格及填充数据</span></h2>
<p>从0创建一个新的表格并显示在页面上,步骤如下:</p>
<ol>
<li>通过createElement('table')创建table元素</li>
<li>通过table.createCaption()创建标题</li>
<li>通过table.createTHead()创建表头</li>
<li>通过table.createTBody()窗体tbody</li>
<li>通过tbody.insertRow(0)插入新行,并返回行对象。</li>
<li>通过insertCell(0)创建单元格</li>
<li>通过document.body.appendChild(table);将table插入到body中</li>
</ol>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">var</span> table=document.createElement('table'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> table.border=1<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> table.width=300<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> table.createCaption().innerHTML='人员表2'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 255, 1)">var</span> thead =<span style="color: rgba(0, 0, 0, 1)"> table.createTHead();
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 255, 1)">var</span> tr =<span style="color: rgba(0, 0, 0, 1)"> thead.insertRow();
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> tr.insertCell(0).innerHTML='Name'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> tr.insertCell(1).innerHTML='Sexy'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> tr.insertCell(2).innerHTML='Age'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 255, 1)">var</span> tbody=<span style="color: rgba(0, 0, 0, 1)">table.createTBody();
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 255, 1)">var</span> tr0 =tbody.insertRow(0<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">12</span> tr0.insertCell(0).innerHTML='Lily'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">13</span> tr0.insertCell(1).innerHTML='girl'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">14</span> tr0.insertCell(2).innerHTML='12'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 255, 1)">var</span> tr1 =tbody.insertRow(1<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">16</span> tr1.insertCell(0).innerHTML='Lucy'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">17</span> tr1.insertCell(1).innerHTML='girl'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">18</span> tr1.insertCell(2).innerHTML='13'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 255, 1)">var</span> tfoot=<span style="color: rgba(0, 0, 0, 1)">table.createTFoot();
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 255, 1)">var</span> tr3 =<span style="color: rgba(0, 0, 0, 1)"> tfoot.insertRow();
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 255, 1)">var</span> tc3= tr3.insertCell(0<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)">22</span> tc3.innerHTML='合计:2'<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">23</span> tc3.colSpan=3<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)">24</span> document.body.appendChild(table);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">将table插入到body中</span></pre>
</div>
<h2><span style="color: rgba(51, 153, 102, 1)">CSS样式</span></h2>
<p>CSS有三种:</p>
<ol>
<li>行内样式,即设置标签的style属性</li>
<li>内联样式,即在<style>标签内容设置</li>
<li>外部样式,即通过<link href >引入</li>
</ol>
<h2><span style="color: rgba(51, 153, 102, 1)">DOM操作style</span></h2>
<p>有一个DIV样式如下所示:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="A01"</span><span style="color: rgba(255, 0, 0, 1)"> style</span><span style="color: rgba(0, 0, 255, 1)">="color: red;background-color: blanchedalmond;font-size: 30px;float: left;"</span><span style="color: rgba(0, 0, 255, 1)">></span>Hello JavaScript<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<h3><span style="color: rgba(128, 0, 128, 1)">如何获取style设置的样式</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">var</span> box=document.getElementById('A01'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> alert(box.style);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">box的行内样式对象。输出:</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> alert( box.style.color);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取设置的颜色</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> alert(box.style.backgroundColor);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取设置的背景颜色,如果设置属性中有-连接符,则用大写表示</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> alert(box.style.fontSize);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取设置的字号 30px</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> box.style.<span style="color: rgba(0, 0, 255, 1)">float</span>;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">关键字,会报错</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> alert(box.style.styleFloat);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">IE11支持,获取浮动 left</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> alert(box.style.cssFloat);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">IE11支持,获取浮动 left</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> alert(box.style.cssText);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取style的文本内容</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> box.style.setProperty('color','yellow');<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">IE11支持,设置样式属性</span></pre>
</div>
<h3><span style="color: rgba(128, 0, 128, 1)">获取计算后的样式</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">//获取计算后的样式
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">var s = window.getComputedStyle(box,null);//IE11支持,返回
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)">alert(s);
</span><span style="color: rgba(0, 128, 128, 1)">4</span> alert(s.color);//返回:rgb(255,0,0) </pre>
</div>
<h3><span style="color: rgba(128, 0, 128, 1)">获取当前样式</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">var s =box.currentStyle;//IE11支持,返回
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">alert(s);
</span><span style="color: rgba(0, 128, 128, 1)">3</span> alert(s.color);//返回:red</pre>
</div>
<h2><span style="color: rgba(51, 153, 102, 1)">改变样式</span></h2>
<p>有一个DIV元素样式如下所示:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="box"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="one"</span><span style="color: rgba(255, 0, 0, 1)"> style</span><span style="color: rgba(0, 0, 255, 1)">="color: orange;"</span><span style="color: rgba(0, 0, 255, 1)">></span>hello js!!!<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>当元素的样式是通过ID来设置的,则可以通过更换ID来变更样式,但一般不建议此方式,因为id是唯一的,随意变更会引起错乱。如下所示:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">var box=document.getElementById('box');
</span><span style="color: rgba(0, 128, 128, 1)">2</span> box.id='pox';//一般不建议此方式,因为id是唯一的。</pre>
</div>
<h2><span style="color: rgba(51, 153, 102, 1)">通过class添加样式</span></h2>
<p>DOM通过className来获取和变更样式,如下所示:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">//通过class添加样式
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">var box=document.getElementById('box');
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)">box.className='two';//会把之前的样式清除掉,再重新添加样式,这样会覆盖之前的css样式
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)">box.className='one two';//可以一次写多个样式
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">function hasClass(element ,cname){
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"> var className=element.className;
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 0, 1)"> //return !!!className.match(new RegExp(cname));
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)"> returnclassName.indexOf(cname,0)>-1;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">alert( hasClass(box,'one'));//返回是否包含样式
</span><span style="color: rgba(0, 128, 128, 1)">11</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">//增加样式
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">function addClass(box,cname){
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)"> box.className+=' '+cname;
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">16</span>
<span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)">//删除样式
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">function removeClass(box,cname){
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)"> box.className = box.className.replace(cname,' ');
</span><span style="color: rgba(0, 128, 128, 1)">20</span> }</pre>
</div>
<h2><span style="color: rgba(51, 153, 102, 1)">DOM操作外部样式</span></h2>
<h3><span style="color: rgba(128, 0, 128, 1)">获取link</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取link</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 255, 1)">var</span> link=document.getElementsByTagName('link');<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取第一个link连接的外部css文件对象</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 255, 1)">var</span> sheet=link.sheet || link.stylesheet;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">为了防止浏览器不兼容</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> alert(sheet);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">输出:</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">如果既有link又有style获取会比较麻烦</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)">var</span> sheets =<span style="color: rgba(0, 0, 0, 1)"> document.styleSheets;
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> alert(sheets);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取的是styleSheets列表 输出</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 255, 1)">var</span> sheet=sheets;
</span><span style="color: rgba(0, 128, 128, 1)">10</span> alert( sheet.disabled);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">是否被禁用</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> alert(sheet.href);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">css样式的路径</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> alert(sheet.title);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取或设置link的title</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> alert(sheet.media);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">IE11,是undefined</span></pre>
</div>
<h3><span style="color: rgba(128, 0, 128, 1)">CSS样式规则集合</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> alert(sheet.cssRules);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">CSS样式规则集合,输出 </span>
<span style="color: rgba(0, 128, 128, 1)">2</span> alert(sheet.cssRules.length);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">规则的长度</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> alert(sheet.cssRules.cssText);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第一个规则的css文本 .one{font-size:20px;}</span>
<span style="color: rgba(0, 128, 128, 1)">4</span> alert(sheet.cssRules.selectorText);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第一个规则的选择符 输出.one</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> sheet.deleteRule(0);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除第一条规则</span>
<span style="color: rgba(0, 128, 128, 1)">6</span> sheet.insertRule('body{background-color:orange;}',0);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">插入一条规则,第一个参数:规则内容,第二参数:插入位置</span></pre>
</div>
<p>以下方法和上述一致,可以兼容两种,来兼容不同的浏览器,如下所示:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> alert( sheet.rules);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">输出</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> alert(sheet.rules.selectorText);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">//第一个规则的选择符 输出.one</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> alert(sheet.rules.cssText);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">第一个规则的css文本 .one{font-size:20px;}</span>
<span style="color: rgba(0, 128, 128, 1)">4</span> sheet.addRule('body','background-color:orange;',0);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">添加规则</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> sheet.removeRule(0);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">删除规则</span>
<span style="color: rgba(0, 128, 128, 1)">6</span> alert( sheet.rules.style.color);<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">行内,内联,样式都可以获取到</span>
<span style="color: rgba(0, 128, 128, 1)">7</span> alert(sheet.cssRules.style.color);</pre>
</div>
<h2><span style="color: rgba(51, 153, 102, 1)">备注</span></h2>
<p>次北固山下<br>[ 唐 ] 王湾</p>
<p>客路青山外,行舟绿水前。潮平两岸阔,风正一帆悬。</p>
<p>海日生残夜,江春入旧年。乡书何处达?归雁洛阳边。</p>
</div>
<div id="MySignature" role="contentinfo">
<div id="AllanboltSignature">
<p style="border-top: #e0e0e0 1px dashed; border-right: #e0e0e0 1px dashed; border-bottom: #e0e0e0 1px dashed; border-left: #e0e0e0 1px dashed; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 30px; font-family: 微软雅黑; font-size: 12px" id="PSignature">
<br>
<img alt="" src="https://images.cnblogs.com/cnblogs_com/hsiang/1154298/o_115f1cd8.jpg" width="80px" height="80px">
作者:老码识途
<br>
出处:http://www.cnblogs.com/hsiang/
<br>
本文版权归作者和博客园共有,写文不易,支持原创,欢迎转载【点赞】,转载请保留此段声明,且在文章页面明显位置给出原文连接,谢谢。
<br>关注个人公众号,定时同步更新技术及职场文章
<br><br>
</p>
</div><br><br>
来源:https://www.cnblogs.com/hsiang/p/12387361.html
頁:
[1]