JavaScript DOM 对象

什么叫DOM,DOM是文档对象模型(Document Object Model,是基于浏览器编程(在本教程中,可以说就是DHTML编程)的一套API接口,W3C出台的推荐标准,每个浏览器都有一些细微的差别,其中以Mozilla的浏览器最与标准接近。单纯的Javascript要结合DOM才能做DHTML编程,才能做出漂亮的效果、应用于WEB。这点几乎与其它的语言无异,正如C/C++需要库支持是一样的道理。否则就是单纯的在语法上做研究了。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。

 

 

1、直接查找

方法名 描述 getElementById(id) (document) 获取有指定惟一ID属性值文档中的元素 getElementsByTagName_r(name) 返回当前元素中有指定标记名的子元素的数组 document.getElementsByClassName 根据class属性获取标签集合 getAttribute(name) 返回元素的属性值,属性由name指定

 

  

 

 

 

1>document.getElementById('id')

<body>
    <div >
        不帅
    </div>
    
    <script type="text/javascript">
        var i = document.getElementById('zhang'); //查找指定的id
        i.innerText = '很帅'; //innerText修改指定的字符串
    </script>
</body>

 显示效果,当我们打开IE的时候不帅就会被修改为很帅

2>getElementsByTagName_r(name)

<body>
    <div name="zhang">
        不帅
    </div>
    
    <script type="text/javascript">
        var i = document.getElementByTagNmae('zhang'); //查找指定的name名
        i.innerText = '很帅'; //innerText修改指定的字符串
    </script>
</body>

其显示效果一样

3>document.getElementsByClassName

<body>
    <div class="zhang">
        不帅
    </div>
    
    <script type="text/javascript">
        var i = document.getElementClassName('zhang'); //查找指定的class名
        i.innerText = '很帅'; //innerText修改指定的字符串
    </script>
</body>

2、间接查找

属性名  描述 childNodes  返回当前元素所有子元素的数组  childNodes  返回当前元素的所有子元素  firstChild  返回当前元素的第一个下级子元素  lastChild   返回当前元素的最后一个子元素  nextSibling    返回紧跟在当前元素后面的元素  previousSibling  返回紧跟在当前元素前面的元素  parentElement  返回其父节点标签元素  children  返回其所有子标签  firstElementChild  返回第一个子标签元素  lastElementChild   返回最后一个子标签元素  nextElementtSibling    返回下一个兄弟标签元素  previousElementSibling  返回上一个兄弟标签元素

 

 

 

 

 

 

 

 

 

 

 

 

 

有了W3C DOM,就能编写简单的跨浏览器脚本,从而充分利用XML的强大功能和灵活性,将XML作为浏览器和服务器之间的通信介质。 

 

操作元素

 

1、动态创建内容时所用的W3C DOM属性和方法

属性/方法  描述 document.createElement_x(tagName) 文档对象上的createElement_x方法可以创建由tagName指定的元素。如果以串div作为方法参数,就会生成一个div元素 document.createTextNode(text) 文档对象的createTextNode方法会创建一个包含静态文本的节点 <element>.appendChild(childNode) appendChild方法将指定的节点增加到当前元素的子节点列表(作为一个新的子节点)。 <element>.setAttribute(name, value) 这些方法分别获得和设置元素中name属性的值 <element>.insertBefore(newNode, targetNode) 将节点newNode作为当前元素的子节点插到targetNode元素前面 <element>.removeAttribute(name) 这个方法从元素中删除属性name <element>.removeChild(childNode) 这个方法从元素中删除子元素childNode <element>.replaceChild(newNode, oldNode) 这个方法将节点oldNode替换为节点newNode <element>.hasChildnodes() 这个方法返回一个布尔值,指示元素是否有子元素

 

 

 

 

 

 

 

 

 

 

 

 

 

2、标签内容

innerText             获取标签文本内容
innerHTML           获取HTML内容
value                   获取值,即form提交表单的值

即实例如下:

<div class="zhang">1111</div>
<div class="yan">2222</div>
<input class="lin" type="text" value="张岩林">
<script>
    document.getElementsByClassName("zhang").innertext = 123; // 获取类名为zhang的标签并把内容改为123
    document.getElementsByClassName("yan").innerHTML = 456;  //获取类名为yan的标签并把内容改为456
    document.getElementsByClassName("lin").value = "张岩林很帅"; //获取类名为lin的标签并把内容改为张岩林很帅
</script>

3、属性

attributes                                 // 获取所有标签属性
setAttribute(key,value)                    // 设置标签属性
getAttribute(key)                          // 获取指定标签属性

通过自定义属性可以做一个全选,反选,取消选择的案例,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <input type="button" value="全选" onclick="Checkall();">
    <input type="button" value="取消" onclick="Cancleall();">
    <input type="button" value="反选" onclick="recvall();">
</div>
<div id = "i1">
    <ul>
        <li><input type="checkbox" value="1" class="c1">篮球</li>
        <li><input type="checkbox" value="2" class="c1">足球</li>
        <li><input type="checkbox" value="3" class="c1">排球</li>
    </ul>
</div>
<script>
    function Checkall() {
        var b = document.getElementsByClassName("c1");
        for (var i = 0 ;i < b.length;i++){
            var check = b[i];
            check.checked = true
        }
    }
    function Cancleall() {
        var b = document.getElementsByClassName("c1");
        for (var i = 0 ;i < b.length;i++){
            var check = b[i];
            check.checked = false
        }
    }
    function recvall() {
        var b = document.getElementsByClassName("c1");
        for (var i = 0 ;i < b.length;i++){
            var check = b[i];
            if (check.checked){
                check.checked = false
            }else {
                check.checked = true
            }
        }
    }


</script>

</body>
</html>
全选、反选、取消案例
38人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册