(腾讯面试)js遍历页面输出dom数量
2010年4月26日
昨天去参加了腾讯的面试,面试官现场出了一道题,要求用JS统计页面的DOM数量。
现场写了一下,但是由于对JS原生DOM操作不基了了,具体的结点操作不会写,只好留了个大致思路。
晚上回到宿舍,终于写出来了。
javascript
var domcount=0;
function domsearch(domobj)
{
if(domobj.firstChild)
{
var tempdom=domobj.firstChild;
do{
domsearch(tempdom);
tempdom=tempdom.nextSibling;
}while(tempdom);
};
if(domobj.nodeType==1)
{
domcount++;
}
}
domsearch(document.getElementsByTagName('html')[0]);
alert(domcount);
var domcount=0;
function domsearch(domobj)
{
if(domobj.firstChild)
{
var tempdom=domobj.firstChild;
do{
domsearch(tempdom);
tempdom=tempdom.nextSibling;
}while(tempdom);
};
if(domobj.nodeType==1)
{
domcount++;
}
}
domsearch(document.getElementsByTagName('html')[0]);
alert(domcount);
这个遍历过程实际上是用的树的孩子兄弟表示法,直接用孩子结点,得到以下代码:
var domcount=0;
function domsearch(domobj)
{
if(domobj.hasChildNodes)
for(var i=0;i<domobj.childNodes.length;i++)
{
domsearch(domobj.childNodes[i]);
};
if(domobj.nodeType==1)
{
domcount++;
}
}
domsearch(document.getElementsByTagName('html')[0]);
alert(domcount);
var domcount=0;
function domsearch(domobj)
{
if(domobj.hasChildNodes)
for(var i=0;i<domobj.childNodes.length;i++)
{
domsearch(domobj.childNodes[i]);
};
if(domobj.nodeType==1)
{
domcount++;
}
}
domsearch(document.getElementsByTagName('html')[0]);
alert(domcount);
感想:基础知识还是要扎实才行,整个面试过程都没有问很虚无飘渺的东西,都是很基础很实在的知识。JS的具体函数可以记不住,但是一定要知道它能做些什么。回来查资料了才知道JS对DOM结点的原生操作是怎样的。另外,DOM编程的电子书在我电脑里好久了,很少去翻,罪过。