getElementByTagNames (複数名であることに注意してください) は、いくつかのタグ要素を取得し、それらを順番に配列に保存します。これは非常に便利です。たとえば、前の章の TOCScript では、記事全体のすべての H3 と H4 を取得する必要があります。
この機能をノードのプロトタイプに追加したいと思っていますが、IE と Safari では機能しません。したがって、通常の関数としてのみ扱うことができます。
getElementByTagNames の使用には、次の 2 つのパラメータがあります:
1。カンマで区切られたタグ名の文字列。
2. オプションの開始要素。これらのタグが存在する場合は、その要素の子要素内で検索され、存在しない場合はドキュメント全体で検索されます。
この関数は、要求されたタグ名に基づいて、ソース コードに出現する順序で並べられた配列 (ノードのリストではなく) を返します。この並べ替えを行うには、ブラウザーがsourceIndexまたはcompareDocumentPositionをサポートしている必要があります。どちらもサポートされていない場合 (Safari)、getElementByTagNames() 関数を呼び出したときのタグ名の順序に従います。
例 1
var headerList = getElementsByTagNames('h1 ,h2, h3,h4');
ここで、headerList は、ドキュメント内の H1 ~ H4 を含む配列であり、出現順に従ってソートされています。
例 2
var 要素 = document .getElementById( 'test');
var formFieldList = getElementsByTagNames('input,select,textarea',element);
ID test を持つすべての子要素に formFieldList が含まれるようになりました。 input、select、TEXTAREA を出現順に並べた配列。
function getElementsByTagNames(list,obj) {
if (!obj) var obj = document;
var tagNames = list.split(',');
var resultArray = new Array(); tagNames.length ;i ) {
var tags = obj.getElementsByTagName(tagNames[i]);
for (var j=0;j resultArray.push(tags) [j] );
}
}
var testNode = resultArray[0];
if (!testNode) return [];
if (testNode.sourceIndex) .sort( function (a,b) {
return a.sourceIndex - b.sourceIndex;
(a ,b) {
return 3 - (a.compareDocumentPosition(b) & 6); 🎜>
コードをコピーします
コードは次のとおりです:
function getElementsByTagNames(list,obj)
{
if (!obj)var obj = document;
最初に開始要素 obj を定義します。指定されていない場合、デフォルトは document です。
コードをコピー
コードは次のとおりです。
var tagNames = list.split (', ');
var resultArray = new Array();
これらのタグ名はカンマで区切ります。配列を使用して結果を保存します。
コードをコピー
コードは次のとおりです。
for (var i=0) ;i
var tags = obj.getElementsByTagName(tagNames[i]);
for (var j=0;jresultArray. Push(タグ[j]);