
原生JS有3种方式来获取元素:
getElementById('id') getElementsByName('name') getElementsByTagName('tag') getElementById是获取元素最快的方式,但我们不能给每个HTML元素都加以ID吧,所以我们需要一个很方便的通过className来获取元素 function getElementsByClassName(className,tagName){ var ele=[],all=documentgetElementsByTagName(tagName||""); for(var i=0;i<alllength;i++){ if(all[i]className==className){ ele[elelength]=all[i]; } } return ele; } consolelog(getElementsByClassName("entry")); consolelog(getElementsByClassName("entry","div"));
实现原理很简单,通过getElementsByTagName获取到一个元素集合,如果传入了tagname这个参数就根据传入的
tagname来获取,否则获取所有的元素,然后再一个一个元素来匹配classname是否相等
上面这个方法很粗糙,能实现我们的基本需求,如果我们要获取的元素有多个 classname怎么办
明显通过className==是不行了
所以我们只要把上面两篇文章的hasclass函数搬过来就OK了,我们再次来改造下我们的getElementsByClassName函数
function getElementsByClassName(className,tagName){ var ele=[],all=documentgetElementsByTagName(tagName||""); for(var i=0;i<alllength;i++){ if(all[i]classNameclassNamematch(new RegExp('(\\s|^)'+cls+'(\\s|$)'))){ ele[elelength]=all[i]; } } return ele; }
这样就能处理一个元素含有多个classname的情况了
<script type="text/javascript">
windowonload=function(){
var result="";
$("#main")children("div")children("div")each(function(){
result+=thisid+"\n";
});
alert(result);
}
</script>
用惯jquery就懒得用document了,呵呵
二叉树我学得很好的。LZ的问题我大二就做个。其实本质就是一个层序遍历
我这里说出找一个节点所有子孙的算法:
假如节点为a, count = 0;
弄一个队列,将a放入队列,count++;
将ad出,接着把a的子节点放入队列(放一个count加一次);
将上一次队列里的节点d出,d一次将其所有子节点放入队列(放一个count加一次);
如果队列里面元素个数为0,整个循环终止,count则为这个节点子孙个数;怎么样LZ是不是很神奇。另外二叉树的所有 *** 作几乎都是栈和队列完成的,LZ要好好学哦。
LZ,既然一个节点的子孙节点能找出,所有的就不是问题了。提示:依然用上面的方法循环调用这个方法即可。
dhtmlXTreeObjectprototypesetSubChecked=function(itemId,state){
if(itemId)
{
var sNode=this_globalIdStorageFind(itemId);
this_setSubChecked(state,sNode);
this_correctCheckStates(sNodeparentObject);
}
不知道你说的正常显示是什么意思
ExtonReady(function(){
//创建树组件
var tree = Extcreate('ExttreePanel',{
renderTo:ExtgetBody()
});
//设置根节点
treesetRootNode({
text: 'Root',
expanded: true,
children: [
{
text: 'Child 1',
leaf: true
},
{
text: 'Child 2',
leaf: true
}
]
});
//treegetRootNode()获取根节点
var root = treegetRootNode();
//rootappendChild追加子节点
var parent = rootappendChild({
text: 'Parent 1',
expanded:true//这里默认打开
});
//子节点上追加孙节点
parentappendChild({
text: 'Child 3',
leaf: true
});
});
没默认打开前
默认打开后
这不是可以正常显示么。
树形结构指的是数据元素之间存在着“一对多”的树形关系的数据结构。在树形结构中,树根结点没有前驱结点,其余每个结点有且只有一个前驱结点。叶子结点没有后续结点,其余每个结点的后续节点数可以是一个也可以是多个。
以上就是关于getelementbytagname("div")方法可以获取所有的DIV元素,但是获取到集合后,如何进一步获取class属性为特全部的内容,包括:getelementbytagname("div")方法可以获取所有的DIV元素,但是获取到集合后,如何进一步获取class属性为特、获取一个div的子节点的子节点、求出二叉树每个节点的子孙个数算法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)