dom对象详解--document对象(一)

   document对象

   

   Document对象代表整个html文档,可用来访问页面中的所有元素,是最复杂的一个dom对象,可以说是学习好dom编程的关键所在。

   Document对象是window对象的一个成员属性,通过window.document来访问,当然也可以直接使用document。

   document对象常用的函数和属性可参考http://www.w3school.com.cn/jsref/dom_obj_document.asp

getElementById()返回对拥有指定 ID 的第一个对象的引用。(如果有相同的id则只取第一个)
createElement()创建一个指定标签名的元素(比如:动态创建超链接)

   getElementById()的使用

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>document示例</title>
    <script type="text/javascript">
        function test() {
            var myHref = document.getElementById("a1");//相同id标签只找第一个
            alert(myHref.innerText);
        }
    </script>
</head>
<body>
    <a id="a1" href="http://www.sohu.com">连接到搜狐</a><br/>
    <a id="a1" href="http://www.sina.com">连接到新浪</a><br/>
    <a id="a1" href="http://www.163.com">连接到163</a><br/>
    <input type="button" value="tesing" onclick="test()" />
</body>
</html>

   通过元素名来获取集合getElementsByName()的使用

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>document示例</title>
    <script type="text/javascript">
        function test() {
            //id不能唯一,但是name可以重复
            var hobbies = document.getElementsByName("hobby");
            //window.alert(hobbies.length);
            for (var i = 0; i < hobbies.length; i++) {
                //如何判断是否选择
                if(hobbies[i].checked) {
                    window.alert("你的爱好是"+hobbies[i].value);
                }
            }
        }
    </script>
</head>
<body>
    请选择你的爱好
    <input type="checkbox" name="hobby" value="足球" />足球
    <input type="checkbox" name="hobby" value="旅游" />旅游
    <input type="checkbox" name="hobby" value="音乐" />音乐
    <input type="button" value="tesing" onclick="test()" />
</body>
</html>

   通过标签名来获取对象(元素)getElementsByTagName()的使用

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>document示例</title>
    <script type="text/javascript">
        //通过标签名来获取对象(元素)
        function test2() {
            var myObjs = document.getElementsByTagName("input");
            for (var i = 0; i < myObjs.length; i++) {
                window.alert(myObjs[i].value);
            }
        }
    </script>
</head>
<body>
    请选择你的爱好
    <input type="checkbox" name="hobby" value="足球" />足球
    <input type="checkbox" name="hobby" value="旅游" />旅游
    <input type="checkbox" name="hobby" value="音乐" />音乐
    <input type="button" value="tesing" onclick="test()" />
    <input type="button" value="获取所有input" onclick="test2()" />
</body>
</html>

   dom对象详解--document对象

   常用的dom的每个Node节点属性和方法(加强篇)

   特别提示:html dom和xml dom都遵循相同dom规范的,所以他们有很多相同的方法和属性,因此我们也可以去查看xml dom的node节点提供的方法和属性。

属性名称类型说明
nodeNameString节点名称
nodeValueString节点值
nodeTypeNumber节点类型
parentNodeNode父节点
firstChildNode第一个子节点
lastChildNode最后一个子节点
childNodesNodeList所有子节点
previousSiblingNode前一个节点
nextSiblingNode后一个节点
ownerDocumentDocument获得该节点所属的文档对象
attributesMap代表一个节点的属性对象

 

方法名称返回值说明
hasChildNodes()Boolean当前节点是否有子节点
appendChild(node)Node往当前节点上添加子节点
removeChild(node)Node删除子节点
replaceChild(oldNode, newNode)Node替换子节点
insertBefore(newNode, refNode)Node在指定节点的前面插入新节点

   有如下html文档:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <input type="button" value="Node测试" onclick="test()" /><br>
    <table border="1px">
        <tr>
        <td></td>
        <td><input type="button" value="向上走" onclick="move(this)" /></td>
        <td></td>
        </tr>
        <tr>
        <td><input type="button" value="向左走" onclick="move(this)" /></td>
        <td></td>
        <td><input type="button" value="向右走" onclick="move(this)" /></td>
        </tr>
        <tr>
        <td></td>
        <td><input type="button" value="向下走" onclick="move(this)" /></td>
        <td></td>
        </tr>
    </table>
    <!--把乌龟放在div中-->
    <div id="wugui" style="position:absolute;left:100px;top:120px;">
        <img src="1.jpg" border="1px" alt="" />
    </div>
    <!--鸡放在div中-->
    <div id="cock" style="position:absolute;left:200px;top:200px;">
        <img src="2.jpg" border="1px" alt="" />
    </div>
</body>
</html>

   dom 节点树:

   

   动态的创建元素(节点)/添加元素(节点)/删除元素(节点)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>document示例</title>
    <script type="text/javascript">
        function test1() {
            //创建元素
            var myElement = document.createElement("a"); //??写希望创建的html元素标签名
            //给新的元素添加新的必要的信息
            myElement.id = "id1";
            myElement.href = "http://www.sina.com.cn";
            myElement.innerText = "连接到sina";
            //定位
            myElement.style.left = "400px";
            myElement.style.top = "300px";
            myElement.style.position = "absolute";
            //添加到document.body
            document.body.appendChild(myElement);
        }
        function test2() {
            var myButton = document.createElement("input");
            myButton.type = "button";
            myButton.value = "这是动态建立的按钮";
            document.getElementById("div1").appendChild(myButton);
        }
        function test3() {
            var myElement = document.createElement("input");
            myElement.type = "text";
            myElement.value = "我是输入框";
            myElement.id = "text_id1";
            document.getElementById("div1").appendChild(myElement);
        }
        function test4() {
            //删除一个元素(删除一个元素前提:必需获得父元素)
            //这是第一种删除方法(不灵活)
            //document.getElementById("div1").removeChild(document.getElementById("text_id1"));
            //第二种方法(推荐此方法)
            document.getElementById("text_id1").parentNode.removeChild(document.getElementById("text_id1"));
        }
    </script>
</head>
<body>
    <input type="button" value="动态的创建一个超链接" onclick="test1()" />
    <input type="button" value="动态的创建一个按钮" onclick="test2()" />
    <input type="button" value="动态的创建一个输入框" onclick="test3()" />
    <input type="button" value="删除一个元素(id为text_id1)" onclick="test4()" />
    <div id="div1" style="width: 200px; height: 400px; border: 1px solid red;">div1</div>
</body>
</html>

   node属性方法的使用[、后节点功能在IE8以上浏览器未通过测试]

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        function test() {
            //获得div1(乌龟div)
            var wuguidiv = $("wugui");
            //window.alert(wuguidiv.nodeName+" "+wuguidiv.nodeType+" "+wuguidiv.nodeValue);// DIV 1 null
            window.alert(wuguidiv.childNodes.length+" "+wuguidiv.nextSibling.nodeValue);
            window.alert(wuguidiv.childNodes.length+" "+wuguidiv.previousSibling.nodeValue);
            window.alert("父亲:"+wuguidiv.parentNode.parentNode);
        }
        function $(id) {
            return document.getElementById(id);
        }
    </script>
</head>
<body>
    <input type="button" value="Node测试" onclick="test()" /><br>
    <table border="1px">
        <tr>
        <td></td>
        <td><input type="button" value="向上走" onclick="move(this)" /></td>
        <td></td>
        </tr>
        <tr>
        <td><input type="button" value="向左走" onclick="move(this)" /></td>
        <td></td>
        <td><input type="button" value="向右走" onclick="move(this)" /></td>
        </tr>
        <tr>
        <td></td>
        <td><input type="button" value="向下走" onclick="move(this)" /></td>
        <td></td>
        </tr>
    </table>
    <!--把乌龟放在div中-->
    <div id="wugui" style="position:absolute;left:100px;top:120px;">
        <img src="1.jpg" border="1px" alt="" />
    </div>
    <!--鸡放在div中-->
    <div id="cock" style="position:absolute;left:200px;top:200px;">
        <img src="2.jpg" border="1px" alt="" />
    </div>
</body>
</html>

   document属性的使用[IE9中测试通过]

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>document属性的使用</title>
    <script type="text/javascript">
        document.fgColor = "white";// 前景色
        document.bgColor = "black";// 背景色
        alert(document.title);//获得title信息
        alert(document.URL);//获得URL地址信息
    </script>
</head>
<body>
    hello,world
</body>
<script type="text/javascript">    
    window.alert(document.body);
</script>
</html>

  

   body对象

   

   body对象代表文档的主体(HTML body)。

   body对象是document对象的一个成员属性,通过document.body来访问。

   使用body对象,要求文档的主体创建后才能使用,也就是说不能在文档的body体还没有创建就去访问body。

   innerText()与innerHTML()区别

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript">
        function test() {
            //document.getElementById("myspan").innerText = "<a href='http://www.sohu.com'>连接到搜狐</a>";// innerText   浏览器作为文本解析
            document.getElementById("myspan").innerHTML = "<a href='http://www.sohu.com'>连接到搜狐</a>";//innerHTML   浏览器作为html解析 
        }
    </script>
</head>
<body>
    <span id="myspan"></span>
    <input type="button" onclick="test()" value="测试" />
</body>
</html>

   onscroll  用户拉动滚动条时触发

   特别说明:onscroll在使用时需要遵循html4.0的标准,否则不能执行,也可以使用window.οnscrοll=函数名来代替body对象的onscroll事件。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>onscroll与onselectstart的使用示例</title>
    <script type="text/javascript">
        function window_onscroll() {
            myHref.style.top = document.body.scrollTop + 50;
            myHref.style.left = document.body.scrollLeft;
        }
        function document_onselectstart() {
            alert("版权所有,严禁拷贝");
            //返回false,可以禁止用户选网页中的文本;当用户选文本时会触发onselectstart事件,返回false就不会选中
            return false;//也可在body中加入onselectstart="return false"同样达到这个效果
        } 
    </script>
    <!-- 还有这样一种写法哟 -->
    <script type="text/javascript" for="document" event="onselectstart">
        //这样等于在body上写入onselectstart="return false"
        return document_onselectstart();
    </script>
</head>
<body onscroll="window_onscroll()">
    <textarea id="textarea" name="textarea" rows="500" cols="500">这样等于与在body上写入onselectstart="return false"</textarea>
    <a href="http://www.sohu.com" id="myHref" style="left: 0px; top: 50px; position: absolute; word-break: keep-all;">
        <img src="sohu.jpg">
    </a>
</body>
</html>

   一个小案例:一个小太阳,当它碰到边框后,就自动的转变方向,很多流氓网站就有这种广告。

   知识点:

  1. document.body.clientWidth //获得客户端浏览器的宽度
  2. document.body.clientHeight //获得客户端浏览器的高度
  3. offsetWidth //获得当前对象的宽度
  4. offsetHeight //获得当前对象的高度

   代码如下:

<!-- <!DOCTYPE html>特别注意:必须去掉才能显示正常 -->
<html>
<head>
    <meta charset="UTF-8">
    <title>小太阳</title>
    <script type="text/javascript">
        //定两个方向(全局变量)
        directX = 1;//x轴的方向
        directY = 1;//y轴的方向
        //小太阳的坐标
        sunX = 0;
        sunY = 0;
        speed = 2;

        function sunMove() {
            sunX += directX*speed;
            sunY += directY*speed;
            //修改div的left、top
            //var sun = document.getElementById("sun");
            sun.style.top = sunY+"px";
            sun.style.left = sunX+"px";
            //判断什么时候转变方向
            //x方向(offsetWidth可以返回当前对象的实际宽度)
            if(sunX+sun.offsetWidth >= document.body.clientWidth || sunX <= 0) {
                directX = -directX;
            }
            /*
            if(sun.style.left+sun.offsetWidth >= body.clientWidth) {
                directX = -1;
            } else if(sun.style.left <= 0) {
                directX = 1;
            }
            */
            //y方向
            if(sunY + sun.offsetHeight >= document.body.clientHeight || sunY <= 0){
                directY = -directY;
            }
        }
        setInterval("sunMove()", 10);
    </script>
</head>
<body style="background-image: url('ship.jpg');">
    <div id="sun" style="position: absolute;">
        <img src="sun.gif" />
    </div>
</body>
</html>

 

转载于:https://www.cnblogs.com/yerenyuan/p/5397919.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值