JavaScript-DOM
第三章 DOM
节点(node)
元素节点(element node) // div ul li a
文本节点 (text node) // 标签内容
属性节点(attribute)//标签的属性值 href
CSS
- id
- class
获取元素
getElementById //通过id取得
document对象特有的函数
getElementsByTagName //通过表签名取得
获取到的是一个数组,可遍历,可使用Array对象中的默认属性
//获取全部标签 通配符* document.getElementsByTagName("*") //返回所有文档节点obj //获取指定标签内所有的标签 var shop = document.getElementById("shop"); var allItems = shop.getElementsByTagName("*");
getElementsByClassName //通过class属性获得 HTML5新增
document.getElementsByClassName("classname") //返回是数组 类似于tagname document.getElementsByClassName("classname1 classname2") //获取多个classname的标签 //获取指定id下所有特定class标签 var id = document.getElementById("id"); var innerClass = id.getElementsByClassName("classname"); //适应老浏览器做法 function getElementsByClassName(node,classname){ if(node.getElementsByClassName){ return node.getElementsByClassName(classname); }else{ var results = []; var allNode = document.getElementsByTagName('*'); for(var i in allNode){ if(allNode[i].className.indexOf(classname) != -1){ results[i] = allNode[i]; } } return results; } } //替换为 var id = document.getElementById("id"); var innerClass = getElementsByClassName(id,"classname");
获取和设置属性
获取元素以后,我们可以获取和设置这些元素的属性
获取属性值 obj.getAttribute(属性名) //不能通过document对象调用,只能通过元素节点调用
//获取所有p标签的title属性 var paras = document.getElementsByTagName('p'); var result = []; for(var i in paras){ result[i] = paras[i].getAttribute('title'); }
设置属性值 obj.setAttribute(“属性名”,”属性值”)
var para = document.getElementById("par"); para.setAttribute("title","我是标题")
这里有一个非常值得关注的细节:通过 setAttribute对文档做出修改后,在通过浏览器的view source(查看源代码)选项去查看文档的源代码时看到的仍将是改变前的属性值,也就是说,setAttribute做出的修改不会反映在文档本身的源代码里。这种“表里不一”的现象源自DOM的工作模式:先加载文档的静态内容,再动态刷新,动态刷新不影响文档的静态内容。这正是DOM的真正威力:对页面内容进行刷新却不需要在浏览器里刷新页面。