peterS.: Thomas Meinike & getElementsByClassName

Beitrag lesen

gruss apstrakt, hallo Forum,

vor knapp 2 wochen wurde die idee fuer eine funktion
   "getElementsByClassName" in diesem forum angestossen
   http://forum.de.selfhtml.org/archiv/2002/12/31500/#m170452
   und von Thomas Meinike offiziell auf den seiten von
   http://www.styleassistant.de umgesetzt -

- zu finden als tipp 100 unter:
   http://www.styleassistant.de/tips/tip100.htm

das folgende beispiel greift diesen tipp auf und
   erweitert diese funktion um das auffinden eines
   klassen-namens bei mehreren fuer ein element
   vergebenen klassen - die moeglichkeit des klassen-
   tausches wurde ebenfalls fuer diesen fall angepasst;

ausserdem sind die funktionen als methoden des
   "document-objects" definiert, so das mit einer
   vetrauten (aber laengeren) schreibweise gearbeitet
   werden kann:

document.getElementsByClassName([className]);
   document.replaceElementsClassNames([className],[newClassName]);

und hier das beispiel:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head>
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="content-script-type" content="text/javascript" />
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>document.getElementsByClassName()</title>
<script type="text/javascript">
<!--
 function docReplaceElementsClassNames(currendClassName,newClassName) {
  var elementsArray = document.getElementsByClassName(currendClassName);
 // alert(elementsArray.length);
  var tempClassName = "";
  var regExpression = null;
  if (elementsArray.length > 0) {
   for (var i=0;i<elementsArray.length;i++) {
 // alert(elementsArray[i].className);
    if (elementsArray[i].className == currendClassName) {
     elementsArray[i].className = newClassName;
    } else if (elementsArray[i].className.indexOf(currendClassName) >= 0) {
     tempClassName = elementsArray[i].className;
     regExpression = new RegExp(newClassName,"g");    // die naechsten drei zeilen sollen verhindern,
     tempClassName = tempClassName.replace(regExpression,""); // dass bei mehrfachem klassentausch eine schon
     tempClassName = tempClassName.replace(/\s+/g," ");   // vorhandene klasse wiederholt zugewiesen wird;
     regExpression = new RegExp(currendClassName,"g");      // in den naechsten 6 zeilen
     if (regExpression.test(tempClassName)) {        // erfolgt der klassentausch:
      tempClassName = tempClassName.replace(regExpression,newClassName); //
     } else {                // - tausch, falls die zu tauschende klasse existiert;
      tempClassName += " " + newClassName;        //
     }                  // - anhaengen, falls die zu tauschende klasse nicht existiert;
  alert("document.replaceElementsClassNames('"+currendClassName+"','"+newClassName+"')\n\ncurrClassName = '"+elementsArray[i].className+"'\nnewClassName = '"+tempClassName+"'");
     elementsArray[i].className = tempClassName;
    }
   }
  }
 }
// siehe auch tipp 100 auf: http://www.styleassistant.de/tips/tip100.htm
 function docGetElementsByClassName(elementClassName) {
  // dank an Dr. Thomas Meinike fuer den tip mit der erlaubten wildcart innnerhalb von javascript - document.getElementsByTagName("*");
  // -- http://www.styleassistant.de/ - http://www.handmadecode.de/ - http://www.et.fh-merseburg.de/person/meinike/ - www.meinike.de --
  var nodesArray = ((document.all) ? (document.all) : ((document.getElementsByTagName) ? (document.getElementsByTagName("*")) : (null)));
  var elementsArray = new Array();
  if (nodesArray) {
   for (var i=0;i<nodesArray.length;i++) {
    if (nodesArray[i].className.indexOf(elementClassName) >= 0) { // "erkennt" auch mehrere einem element zugewiesene klassen;
     elementsArray[elementsArray.length] = nodesArray[i];
    }
   }
  }
  return elementsArray;
 }

document.getElementsByClassName = docGetElementsByClassName;
 document.replaceElementsClassNames = docReplaceElementsClassNames;

function runApplication() {
  alert("document.getElementsByClassName().length = " + document.getElementsByClassName().length + "\n\ndocument.getElementsByClassName("bgOrange").length = "+document.getElementsByClassName("bgOrange").length);
  document.replaceElementsClassNames("bgBlack","bgOrange");
  document.replaceElementsClassNames("orange","black");
  document.replaceElementsClassNames("white","black");
  document.replaceElementsClassNames("fixedCopy","defaultCopy");
 }
//-->
</script>
<style type="text/css">
<!--
 body {
  margin-left : 0px;
  margin-top : 0px;
  margin-right : 0px;
  margin-bottom : 0px;
  font-family : verdana,geneva,helvetica,arial,sans-serif;
  font-size : 0.8em;
  color : #000000;
 }
 .defaultCopy {
  font-size : 0.8em;
  color : #000000;
 }
 .fixedCopy {
  font-size : 10px;
  line-height : 12px;
  color : #000000;
 }
 .bold {font-weight : bold;}
 .underline {text-decoration : underline;}
 .bgOrange {background-color : #ffcc00;}
 .bgBlack {background-color : #000000;}
 .orange {color : #ffcc00;}
 .white {color : #ffffff;}
 .black {color : #000000;}

.floatLeft {float : left;}

div.borderColumn {width : 20%;}
 div.contentColumn {width : 60%;}
//-->
</style>
</head>

<body onload="runApplication()" bgcolor="#f5f5f5" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0">
<div id="content" name="content" style="width:100%">
 <br /><br /><br /><br /><br />
 <div id="leftColumnt" name="leftColumnt" class="borderColumn floatLeft"> </div>
 <div id="middleColumn" name="middleColumn" class="contentColumn floatLeft">
  defaultText, defaultText, defaultText, defaultText, <p class="bgOrange">defaultText, defaultText,</p> defaultText, defaultText, defaultText, defaultText,
  defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText,
  defaultText, defaultText, <span class="fixedCopy bgOrange">defaultText, defaultText,</span> defaultText, defaultText, defaultText, defaultText, defaultText, defaultText,
  defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText,
  defaultText, defaultText, <span class="fixedCopy white bgBlack">defaultText, defaultText,</span> defaultText, defaultText, defaultText, defaultText, defaultText, <p class="bgOrange">defaultText,</p>
  defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText,
  <span class="bgOrange">defaultText,</span> defaultText, defaultText, defaultText, <p class="fixedCopy orange bgBlack">defaultText, defaultText, defaultText,</p> defaultText, defaultText, defaultText,
  defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText,
  defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, defaultText, <span class="bold underline white bgOrange">defaultText;</span>
 </div>
 <div id="rightColumn" name="rightColumn" class="borderColumn floatLeft"> </div>
</div>
</body>

</html>

viel spass - by(t)e by(t)e - peterS. - pseliger@gmx.net