HTMLドキュメントノードの遍歴
3089 ワード
このようなニーズがあり、ドキュメントのフォントを縮小する機能を実現します.考え方は簡単で、ドキュメントのノードを遍歴して、すべての要素のfont-size属性を元の何倍に設定して拡大の目的を達成します.最初はstyleとfont-sizeプロパティを設定していない要素もあるので、デフォルト値を指定する必要があります.
上から分かるように、重点はドキュメントのノードの遍歴であり、chidNodesを通じて遍歴し始めたばかりで、コードは以下の通りです.
デフォルトフォントを設定する関数setDefaultFontSizeコードは次のとおりです.
ここにはすべての要素がリストされていません.私のページには上の要素だけがstyleやfont-sizeを設定していない可能性があります.
その後、テストしたところ、nodeNameにはなんと「#Text」が入っていて、つまりテキストのノードまで遍歴していたことがわかりました.テキストノードを遍歴したくなくて要素ノードだけを遍歴したらどうしますか?ノードにはnodeType属性があり、nodeType=1の場合は要素ノードです.すると、修正コードは次のようになります.
これでいいです.
その後、chidrenを直接介してドキュメントを巡回することができ、childrenは要素ノードのみを含むことが分かった.コードは次のとおりです.
後で探してみたらchildNodesとchildrenの違いがわかり、同時にNodeとElementの違いも分かった.
Node(ノード)はDOM階層内の任意のタイプのオブジェクトの共通名であり、Nodeには要素ノード、属性ノード、テキストノード、注釈ノードなど多くのタイプがあり、NodeTypeで区別され、例えば要素ノードが1であり、テキストノードが3である.ElementはNodeクラスを継承している.つまり、ElementはNodeの多様なタイプの一つである.すなわち、NodeTypeが1の場合、NodeはElementNodeであり、またElementはNodeを拡張し、Elementはid、class、childrenなどの属性を持つ.つまりchildrenはElementの属性であり、childNodesはNodeの属性である.
具体的には、nodeとelement、childNodesとchildrenの違いを参照してください.
上から分かるように、重点はドキュメントのノードの遍歴であり、chidNodesを通じて遍歴し始めたばかりで、コードは以下の通りです.
/*
*
*element
*scale
*/
function fontChange(element,scale){
for(var i=0;i2){// px
var changeSize;
changeSize=size.substring(0,size.length-2)*scale+size.substring(size.length-2);
ele.style.fontSize=changeSize;
fontChange(ele,scale);
}
}
デフォルトフォントを設定する関数setDefaultFontSizeコードは次のとおりです.
/*
*
*/
function setDefaultFontSize(node){
var tagName = node.nodeName.toString();
switch(tagName){
case "H1":
node.style.fontSize = "24px";
break;
case "H2":
node.style.fontSize = "18px";
break;
case "H3":
node.style.fontSize = "14px";
break;
case "H4":
node.style.fontSize = "12px";
break;
case "P":
node.style.fontSize = "12px";
break;
case "SPAN":
node.style.fontSize = "12px";
break;
default:
break;
}
}
ここにはすべての要素がリストされていません.私のページには上の要素だけがstyleやfont-sizeを設定していない可能性があります.
その後、テストしたところ、nodeNameにはなんと「#Text」が入っていて、つまりテキストのノードまで遍歴していたことがわかりました.テキストノードを遍歴したくなくて要素ノードだけを遍歴したらどうしますか?ノードにはnodeType属性があり、nodeType=1の場合は要素ノードです.すると、修正コードは次のようになります.
/*
*
*element
*scale
*/
function fontChange(element,scale){
for(var i=0;i2){
var changeSize;
changeSize=size.substring(0,size.length-2)*scale+size.substring(size.length-2);
ele.style.fontSize=changeSize;
}
fontChange(ele,scale);
}
}
これでいいです.
その後、chidrenを直接介してドキュメントを巡回することができ、childrenは要素ノードのみを含むことが分かった.コードは次のとおりです.
/*
*
*element
*scale
*/
function fontChange(element,scale){
for(var i=0;i2){
var changeSize;
changeSize=size.substring(0,size.length-2)*scale+size.substring(size.length-2);
ele.style.fontSize=changeSize;
}
}
fontChange(ele,scale);
}
}
後で探してみたらchildNodesとchildrenの違いがわかり、同時にNodeとElementの違いも分かった.
Node(ノード)はDOM階層内の任意のタイプのオブジェクトの共通名であり、Nodeには要素ノード、属性ノード、テキストノード、注釈ノードなど多くのタイプがあり、NodeTypeで区別され、例えば要素ノードが1であり、テキストノードが3である.ElementはNodeクラスを継承している.つまり、ElementはNodeの多様なタイプの一つである.すなわち、NodeTypeが1の場合、NodeはElementNodeであり、またElementはNodeを拡張し、Elementはid、class、childrenなどの属性を持つ.つまりchildrenはElementの属性であり、childNodesはNodeの属性である.
具体的には、nodeとelement、childNodesとchildrenの違いを参照してください.