Heim >Web-Frontend >js-Tutorial >JavaScript-DOM-Operationsformen und -Stile_Grundkenntnisse

JavaScript-DOM-Operationsformen und -Stile_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:04:201019Durchsuche

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

a34de1251f0d9fe1e645927f19a896e8Dem Element hinzugefügte Attribute und Methoden

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

der Tabelle ab Alert(table.caption.innerHTML); // Den Inhalt der Beschriftung abrufen;


// 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;

Erkennen Sie, ob der Browser CSS-Funktionen auf DOM1-Ebene oder CSS-Funktionen auf DOM2-Ebene unterstützt

​​​ 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)

var box = document.getElementById('box');

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;

Der erste Stil ist inline, lesbar und beschreibbar; Der zweite Typ von Inline/Inline und Link verwendet getComputedStyle oder currentStyle, was lesbar, aber nicht beschreibbar ist Die dritte Art von Inlining und Verbindung verwendet cssRules oder Regeln, die lesbar und beschreibbar sind
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn