Heim > Artikel > Web-Frontend > JavaScript-DOM-Operationsformen und -Stile_Grundkenntnisse
1 Operationsformular
f5d188ed2c074f8b944552db028f98a1-Tag ist die komplexeste Struktur in HTML. Wir können es über DOM erstellen und generieren oder über HTMLDOM betreiben
// 使用DOM来创建表格; var table = document.createElement('table'); table.border = 1; table.width = 300; var caption = document.createElement('caption'); table.appendChild(caption); caption.appendChild(document.createTextNode('人员表')); var thead = document.createElement('thead'); table.appendChild(thead); var tr = document.createElement('tr'); thead.appendChild(tr); var th1 = document.createElement('th'); var th2 = document.createElement('th'); tr.appendChild(th1); th1.appendChild(document.createTextNode('姓名')); tr.appendChild(th2); th2.appendChild(document.createTextNode('年龄')); document.body.appendChild(table);
// Die Tabelle ist komplex und hat viele Ebenen. Die Verwendung des vorherigen DOM zum Abrufen eines bestimmten Elements wird empfohlen
Einführung in HTMLDOM-Eigenschaften und -Methoden
Beschreibung der Eigenschaft oder Methode
caption enthält einen Verweis auf das Element
tBodies enthält eine HTMLCollection von 92cee25da80fac49f6fb6eec5fd2c22a-Elementen;
tFoot enthält einen Verweis auf das
-Element
tHead enthält einen Verweis auf das ae20bdd317918ca68efdc799512a9b39-Element;
rows enthält eine HTMLCollection von a34de1251f0d9fe1e645927f19a896e8-Elementen;
createTHead() erstellt das ae20bdd317918ca68efdc799512a9b39-Element und gibt die Referenz zurück;
createTFoot() erstellt das 06669983c3badb677f993a8c29d18845-Element und gibt die Referenz zurück;
createCpation() erstellt das 63bd76834ec05ac1f4c0ebbeaafb0994-Element und gibt die Referenz zurück;
deleteTHead() löscht das ae20bdd317918ca68efdc799512a9b39-Element;
deleteTFoot() löscht das 06669983c3badb677f993a8c29d18845-Element;
deleteCaption() löscht das 63bd76834ec05ac1f4c0ebbeaafb0994-Element;
deleteRow(pos) löscht die angegebene Zeile;
insertRow(pos) fügt eine Zeile an der angegebenen Position in der Zeilensammlung
ein
Vom 92cee25da80fac49f6fb6eec5fd2c22a-Element hinzugefügte Attribute und Methoden
rows enthält eine HTMLCollection von Zeilen im 92cee25da80fac49f6fb6eec5fd2c22a-Element;
deleteRow(pos) löscht die Zeile an der angegebenen Position;
insertRow(pos) fügt eine Zeile an der angegebenen Position in der Zeilensammlung
ein
Zellen enthält die HTMLCollection-Sammlung von Zellen im a34de1251f0d9fe1e645927f19a896e8-Element;
deleteCell(pos) löscht die Zelle an der angegebenen Position;
insertCell(pos) fügt eine Zelle an der angegebenen Position der Zellsammlung ein und gibt eine Referenz zurück;
//HTMLDOM ruft die 63bd76834ec05ac1f4c0ebbeaafb0994
// PS: ae20bdd317918ca68efdc799512a9b39 sind in einer Tabelle eindeutig, es kann nur eines geben;
// Und 92cee25da80fac49f6fb6eec5fd2c22a ist nicht eindeutig, es können also mehrere Elemente sein, die schließlich zurückgegeben werden; 92cee25da80fac49f6fb6eec5fd2c22a
2 Bedienungsstil
Als Hilfsmittel zu (X)HTML kann CSS den Anzeigeeffekt der Seite verbessern, aber nicht jeder Browser kann die neuesten CSS-Funktionen unterstützen;
CSS-Funktionen hängen eng mit den DOM-Ebenen zusammen, daher ist es notwendig, die Ebene der vom aktuellen Browser unterstützten CSS-Funktionen zu ermitteln;
Es gibt drei Möglichkeiten, Stile in HTML zu definieren:
(1). Verwenden Sie das Stilattribut, um Stile für bestimmte Elemente zu definieren
(2). Verwenden Sie das Element e5323b80b7cdba5fa628a1c89784fa75, um eingebettete Stile zu definieren
(3). Enthalten Sie externe Stylesheet-Dateien über das Element 1 // DOM1-Ebene implementiert die grundlegendste Dokumentverarbeitung, DOM2 und DOM3 fügen auf dieser Basis weitere interaktive Funktionen hinzu;
DOM2 fügt CSS-Programmierzugriffsmethoden hinzu und ändert CSS-Stilinformationen;
Alert('DOM1-Level-CSS-Fähigkeit:' document.implementation.hasFeature('CSS','2.0'));
Alert('DOM2-Level-CSS-Fähigkeit:' document.implementation.hasFeature('CSS2','2.0'));1. Greifen Sie auf den Stil des Elements zu
(1).style Eigenschaft/Objekt
// Jedes HTML-Element-Tag verfügt über ein gemeinsames Attribut: style, das ein CSSStyleDeclaration-Objekt
zurückgibt
CSS-Eigenschaften und JavaScript-Aufrufe
CSS-Eigenschaften JavaScript-Aufrufe
Farbe style.color
Schriftgröße style.fontSize
float style.cssFloat (nicht-IE)
float style.styleFloat(IE)
box.style; // CSSStyleDecaration;
box.style.color;
box.style.fontSze; // 20px;
// Kompatibel mit der Float-Operation des IE;
Typeof box.style.cssFloat != 'undefiniert' ? box.style.cssFloat = 'right' : box.style.styleFloat = 'right';
DOM2级样式规范为style对象定义属性和方法
属性或方法 说明
cssText 访问或设置style中的CSS代码;
box.style.cssText; // 获取CSS代码;
// PS:style属性仅仅只能获取行内的CSS样式,对于另外两种形式内联c9ccee2e6ea535a969eb3f532ad9fe89和链接2cdf5bf648cf2f33323966d7f58a7f3f方法则无法获取到;
(2).计算后的样式:getComputedStyle/currentStyle
// 虽然可以通过style来获取单一值的CSS样式,但对于复合值的样式信息,就需要通过计算样式来获取;
// DOM2级样式,window对象下提供了getComputedStyle()方法:接收两个参数,需要计算的样式元素,和伪类(:hover);如果没有伪类,则null;
// getComputedStyle()方法返回一个CSSStyleDeclaration对象;(与style属性的类型相同);其中包含当前元素的所有计算的样式;
// PS:IE不支持这个DOM2级的方法,但有个类似的属性可以使用currentStyle属性;
var box = document.getElementById('box');
var style = window.getComputedStyle ? window.getComputedStyle(box,null) : null ||box.currentStyle;
alert(style.color); // 颜色在不同的浏览器会有不同rgb()格式;
alert(style.border); // 不同浏览器不同的结果;
alert(sytle.fontFamily); // 计算显示复合的样式值;
// PS:border属性是一个综合属性,所以它在Chrome显示了,Firefox为空,IE为undefined;
// 所以,DOM在获取CSS的时候,最好采用完整写法兼容性最好;比如:border-top-color;
2.操作样式表
// 使用style属性可以设置行内的CSS样式,而通过id和class调用是最常用的方法; box.className = 'red'; // 通过className关键字来设置样式; // 添加多个className函数: // 判断是否存在这个class; function hasClass(element,className){ return element.className.match(new RegExp('(\\s|^)'+className+'(\\s|$)')); } // 添加一个class,如果不存在的话; function addClass(element,className){ if(!hasClass(element,className)){ element.className += " "+className; } } // 删除一个class,如果存在的话; function removeClass(element,className){ if(hasClass(element,className)){ element.className = element.className.replace(new RegExp('(\\s|^)'+className+'(\\s|$)'),''); } } // 之前使用style属性,仅仅只能获取和设置行内的样式; // 然后学习的getComputedStyle和currentStyle,只能获取却不能设置;
(1).获得CSSStyleSheet
// CSSStyleSheet类型可以通过2cdf5bf648cf2f33323966d7f58a7f3f元素和c9ccee2e6ea535a969eb3f532ad9fe89元素包含的样式表;
document.implementation.hasFeature('StyleSheet','2.0'); // 是否支持DOM2级样式表;
document.getElementsByTagName('link')[0]; // HTMLLinkElement;
document.getElementsByTagName('style')[0]; // HTMLStyleElement;
// 这两个元素本身返回的是HTMLLinkElement和HTMLStyleElement类型;但CSSStyleSheet类型更加通用一些;
// 得到这个类型非IE使用sheet属性,IE使用styleSheet;
var link = document.getElementsByTagName('link')[0];
var sheet = link.sheet || link.styleSheet; // 得到CSSStyleSheet;
(2).CSSStyleSheet对象的属性和方法
CSSStyleSheet属性或方法
属性或方法 说明
disabled 获取和设置样式表是否被禁用;
href 如果是通过2cdf5bf648cf2f33323966d7f58a7f3f包含的,则样式表为URL,否则为null;
media 样式表支持的所有媒体类型的集合;
ownerNode 指向拥有当前样式表的指针;
parentStyleSheet @import导入的情况下,得到父CSS对象;
title ownerNode中title属性的值;
type 样式表类型字符串;
cssRules 样式表包含样式规则的集合,IE不支持; IE为rules;12 ownerRule @import导入的情况下,指向表示导入的规则,IE不支持;
deleteRule(index) 删除cssRules集合中指定位置的规则,IE不支持;
insertRule(rule,index) 向cssRules集合中指定位置插入rule字符串,IE不支持;
sheet.disabled; // false; 可设置为true;
sheet.href; // css的URL;
sheet.media; // MediaList,集合;
sheet.title; // 得到title属性的值;
sheet.cssRules; // CSSRuleList,样式表规则集合;
sheet.deleteRule(0); // 删除第一个样式规则;
sheet.insertRule("body {background-color:red}",0); // 在第一个位置添加一个样式规则;
// PS:IE中不支持的属性和方法,IE有替代版本;
sheet.rules; // 代替cssRules的IE版本;
sheet.removeRule(0); // 代替deleteRule的IE版本;
sheet.addRule("body","{background-color:red",0); // 代替insertRule的IE版本;
// 除了刚才的方法可以得到CSSStyleSheet类型,还有一种方法是通过document的styleSheets属性来获取;
document.styleSheets; // StyleSheetList,集合;
var sheet = docuemnt.styleSheets[0]; // CSSStyleSheet,第一个样式表对象;
// 添加CSS规则,并兼容所有浏览器函数; var sheet = docuemnt.styleSheets[0]; insertRule(sheet,"body","background-color:red;",0); function insertRule(sheet,selectorText,cssText,postion){ // 如果是非IE; if(sheet.insertRule){ sheet.insertRule(selectorText+"{"+cssText+"}",postion); // 如果是IE }else if(sheet.addRule){ sheet.addRule(selectorText,cssText,postion); } }
(3).CSSRules-Stylesheet-Regelsammlungsliste;
// Über das CSSRules-Attribut (Nicht-IE) und das Rules-Attribut (IE) können wir die Regelsammlungsliste des Stylesheets abrufen
// Auf diese Weise können wir für jeden Stil bestimmte Operationen ausführen;
var sheet = docuemnt.styleSheets[0]; // CSSStyleSheet;
var Rules = sheet.cssRules ||. sheet.rules; // CSSRuleList, eine Sammlungsliste für Stylesheets;
var Rule = Rules[0]; // CSSStyleRule, die erste Regel des Stylesheets
Eigenschaften von CSSRules
Objektbeschreibung
cssText ruft den Text ab, der der aktuellen Gesamtregel entspricht. IE unterstützt ihn nicht
parentRule @import importiert, gibt Regel oder null zurück, IE unterstützt es nicht;
parentStyleSheet Das Stylesheet der aktuellen Regel, IE unterstützt es nicht;
selectorText ruft den Selektortext der aktuellen Regel ab;
style gibt ein CSSStyleDeclaration-Objekt zurück, das Stile abrufen und festlegen kann;
Typ stellt den konstanten Wert der Regel dar. Bei Stilregeln ist der Wert 1, was vom IE nicht unterstützt wird
Rule.cssText; // Stiltext der aktuellen Regel;
Rule.selectorText; // #box; Stilauswahl;
Rule.style.color; // red; den spezifischen Stilwert abrufen;
Rule.style.backgroundColor = "green"; // Ändern Sie die Stilinformationen einer bestimmten Regel;
3 Zusammenfassung
Das Stilmodul auf DOM2-Ebene wurde hauptsächlich für die Verarbeitung der Stilinformationen von Elementen entwickelt. Seine Eigenschaften sind wie folgt:
(1). Jedem Element ist ein Stilobjekt zugeordnet, mit dem der Inline-Stil bestimmt und geändert werden kann
(2). Um den berechneten Stil eines Elements (einschließlich aller darauf angewendeten CSS-Regeln) zu bestimmen, können Sie die Methode getComputedStyle() verwenden
(3).IE unterstützt ähnliche Methoden currentStyle();
(4). Auf Stylesheets kann über die document.styleSheets-Sammlung zugegriffen werden. 6 // (5) Drei Methoden zur Bedienung von CSSRules;