Die Funktion setAttribute() kann das Attribut des Objekts festlegen. Wenn dieses Attribut nicht vorhanden ist, wird es erstellt.
Grammatikstruktur:
el.setAttribute(name,value)
Parameterliste:
Parameterbeschreibung
Name ist erforderlich. Gibt den festzulegenden Attributnamen an.
Wert ist erforderlich. Gibt den festzulegenden Eigenschaftswert an.
Codebeispiel:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <script type="text/javascript"> window.onload=function(){ var mydiv=document.getElementById("mydiv"); mydiv.setAttribute("id","newid"); alert(mydiv.getAttribute("id")); } </script> </head> <body> <div id="mydiv"></div> </body> </html>
Der obige Code kann den ID-Attributwert des Div zurücksetzen und den neu festgelegten ID-Attributwert anzeigen.
Beispiel 2:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <script type="text/javascript"> window.onload=function(){ var mydiv=document.getElementById("mydiv"); mydiv.setAttribute("newAttr","attrValue"); alert(mydiv.getAttribute("newAttr")); } </script> </head> <body> <div id="mydiv"></div> </body> </html>
Der obige Code kann den newAttr-Attributwert des div festlegen und diesen Attributwert anzeigen. Hier muss besonders beachtet werden, dass die Funktion setAttribute() zunächst dieses Attribut erstellt und ihm dann einen Wert zuweist, da div standardmäßig nicht über das Attribut newAttr verfügt.
Die beiden oben genannten Codebeispiele können in allen gängigen Browsern erfolgreich ausgeführt werden. Dies bedeutet jedoch nicht, dass die Funktion setAttribute() mit jedem Browser kompatibel ist.
Sehen Sie sich ein anderes Codebeispiel an:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <style type="text/css"> .textcolor{ font-size:18px; color:red; } </style> <script type="text/javascript"> window.onload=function(){ var mydiv=document.getElementById("mydiv"); mydiv.setAttribute("class","textcolor"); } </script> </head> <body> <div id="mydiv"></div> </body> </html>
Der obige Code kann die Schriftgröße auf 18 Pixel und die Schriftfarbe auf Rot in Standardbrowsern festlegen, er wird jedoch nicht in IE6- und IE7-Browsern wirksam.
Sie können jedoch weiterhin mydiv.getAttribute("class") verwenden, um den Attributwert „textcolor“ abzurufen.
Das heißt, in IE6- oder IE7-Browsern kann die Funktion setAttribute() verwendet werden, sie ist jedoch nicht für alle Attribute wirksam.
Die folgenden Attribute weisen die oben genannten Probleme auf:
1.Klasse
2.für
3.Zellenabstand
4.Zellenpolsterung
5.tabindex
6.readonly
7.maxlength
8.rowspan
9.colspan
10.usemap
11.frameborder
12.contenteditable
13.Stil
Um das obige Problem zu lösen, müssen wir eine universelle browserübergreifende Schnittstellenmethode zum Festlegen von Elementattributen schreiben:
dom=(function(){ var fixAttr={ tabindex:'tabIndex', readonly:'readOnly', 'for':'htmlFor', 'class':'className', maxlength:'maxLength', cellspacing:'cellSpacing', cellpadding:'cellPadding', rowspan:'rowSpan', colspan:'colSpan', usemap:'useMap', frameborder:'frameBorder', contenteditable:'contentEditable' }, div=document.createElement('div'); div.setAttribute('class','t'); var supportSetAttr = div.className === 't'; return { setAttr:function(el, name, val){ el.setAttribute(supportSetAttr ? name : (fixAttr[name] || name), val); }, getAttr:function(el, name){ return el.getAttribute(supportSetAttr ? name : (fixAttr[name] || name)); } } })();
Erstens verwenden Standardbrowser direkt die ursprünglichen Attributnamen. Zweitens verwenden IE6/7-Attribute, die oben nicht aufgeführt sind, immer noch die ursprünglichen Attributnamen. Schließlich verwenden diese speziellen Attribute fixAttr.
Dann kann das obige Codebeispiel in die folgende Form geändert werden:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <style type="text/css"> .textcolor{ font-size:18px; color:red; } </style> <script type="text/javascript"> dom=(function(){ var fixAttr={ tabindex:'tabIndex', readonly:'readOnly', 'for':'htmlFor', 'class':'className', maxlength:'maxLength', cellspacing:'cellSpacing', cellpadding:'cellPadding', rowspan:'rowSpan', colspan:'colSpan', usemap:'useMap', frameborder:'frameBorder', contenteditable:'contentEditable' }, div=document.createElement('div'); div.setAttribute('class','t'); var supportSetAttr = div.className === 't'; return { setAttr:function(el, name, val){ el.setAttribute(supportSetAttr ? name : (fixAttr[name] || name), val); }, getAttr:function(el, name){ return el.getAttribute(supportSetAttr ? name : (fixAttr[name] || name)); } } })(); window.onload=function(){ var mydiv=document.getElementById("mydiv"); dom.setAttr(mydiv, 'class', 'textcolor'); } </script> </head> <body> </body> </html>
Der obige Code ist in allen gängigen Browsern gültig und kann die Schriftgröße auf 18 Pixel und die Farbe auf Rot einstellen.
Für das Stilattribut können Sie aus Kompatibilitätsgründen el.style.color="xxx" verwenden.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.