Heim  >  Artikel  >  Web-Frontend  >  Verwendung der setAttribute()-Funktion in Javascript und ihre Kompatibilitäts-Javascript-Fähigkeiten

Verwendung der setAttribute()-Funktion in Javascript und ihre Kompatibilitäts-Javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 15:49:371544Durchsuche

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 &#63; name : (fixAttr[name] || name), val);
  },
  getAttr:function(el, name){
  return el.getAttribute(supportSetAttr &#63; 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 &#63; name : (fixAttr[name] || name), val); 
  }, 
  getAttr:function(el, name){ 
  return el.getAttribute(supportSetAttr &#63; 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.

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