DOM编程

DOM模型概述

在这里插入图片描述在这里插入图片描述

DOM模型和HTML文档

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

访问HTML元素

在这里插入图片描述

根据ID访问HTML元素

在这里插入图片描述在这里插入图片描述

根据CSS选择器来访问HTML元素

在这里插入图片描述
代码示例:

	<div id="a">疯狂java讲义</div>
   <textarea name="" id="b" cols="25" rows="3">轻量级javaee企业应用实战</textarea>
   <input type="button" value="访问两个元素" onclick="accessById();">
   <script>
	    var accessById = function(){
	        alert(document.querySelector("#a").innerHTML+"\n"+
	        document.querySelector("#b").value);
        }
    </script>

效果图示
在这里插入图片描述

代码示例:

<div></div>
   <div></div>
   <div></div>
   <input type="button" value="修改全部div元素" οnclick="change()">
   <script>
        var change = function(){
            var divlist = document.querySelectorAll("div");
            alert(divlist);
            for (var i = 0;i<divlist.length ;i++) {
                    divlist[i].innerHTML = "测试内容"+i;
                    divlist[i].style.width = "300px";
                    divlist[i].style.height = "50px";
                    divlist[i].style.margin = "10px";
                    divlist[i].style.backgroundColor = "#faa";
                    divlist[i].onclick = function(){
                        for (var j = 0; j < divlist.length; j++) {
                            divlist[j].style.backgroundColor = "#faa";
                        }
                        this.style.backgroundColor = "blue";
                    }
                
            }
        }
    </script>

效果图示
在这里插入图片描述
通过querySelector实现下拉菜单
下拉菜单
通过querySelector实现显示内容的切换
添加链接描述

利用节点关系访问HTML元素

在这里插入图片描述
在这里插入图片描述
代码中用两个nextSibling的原因:空白与换行符也会被识别为一个结点
代码示例

 <ol id="books">
        <li id="java">第一个</li>
        <li id="ssh">第二个</li>
        <li id="ajax" class="selected">第三个</li>
        <li id="xml">第四个</li>
        <li id="ejb">第五个</li>
        <li id="android">第六个</li>
    </ol>
    <input type="button" value="父节点" onclick="change(curTarget.parentNode)">
    <input type="button" value="第一个" onclick="change(curTarget.parentNode.firstChild.nextSibling)">
    <input type="button" value="上一个" onclick="change(curTarget.previousSibling.previousSibling)">
    <input type="button" value="下一个" onclick="change(curTarget.nextSibling.nextSibling)">
    <input type="button" value="最后一个" onclick="change(curTarget.parentNode.lastChild.previousSibling)">
    
    <script>
        //空白也算一个结点
        var curTarget = document.getElementById("ajax");
        curTarget.style.backgroundColor = "red";
        var change = function(target){
            alert(target.innerHTML);
        }
    </script>

在这里插入图片描述

访问表单控件

在这里插入图片描述
访问表单控件有下面三种方法
在这里插入图片描述
代码示例:

	<form action="" id="d" method="post">
        <input type="text" name="user" id=""><br>
        <input type="text" name="pass" id=""><br>
        <select name="color" id="">
            <option value="red">红色</option>
            <option value="blue">蓝色</option>
        </select><br>
        <input type="button" value="第一个" onclick="alert(document.getElementById('d').elements[0].value);">
        <input type="button" value="第二个" onclick="alert(document.getElementById('d').elements['pass'].value);">
        <input type="button" value="第三个" onclick="alert(document.getElementById('d').color.value);">
    </form>

效果图示:
在这里插入图片描述

访问列表框、下拉菜单的选项

在这里插入图片描述
代码示例:

<select name="mySelect" id="mySelect" size="6">
        <option value="java">java讲义</option>
        <option value="ssh">轻量级javaee企业应用实战</option>
        <option value="ajax" selected>疯狂java讲义</option>
        <option value="xml">疯狂xml讲义</option>
        <option value="ejb">经典javaee企业应用实战</option>
        <option value="Android">疯狂Android讲义</option>
    </select><br>   
    <input type="button" value="第一个" onclick="change(curTarget.options[0]);">
    <input type="button" value="上一个" onclick="change(curTarget.options[curTarget.selectedIndex - 1])">
    <input type="button" value="下一个" onclick="change(curTarget.options[curTarget.selectedIndex + 1])">
    <input type="button" value="最后一个" onclick="change(curTarget.options[curTarget.length - 1])">
    <script>
        var curTarget = document.getElementById("mySelect");
        var change = function (target) {
            alert("内容:"+target.text+"   value:"+target.value)
        }
    </script>

效果图示:
在这里插入图片描述
代码示例实现点击多选框界面跳转:

<select id="my" size="4" style="width: 100px;height: 100px;">
        <option value="http://www.baidu.com">百度</option>
        <option value="http://www.taobao.com">淘宝</option>
        <option value="http://www.360.cn">360</option>
    </select>
    <script>
        var sel = document.getElementById("my");
        var list = sel.options;
        for (let i = 0; i < list.length; i++) {
            list[i].onclick = function (){
                var link = list[i].value;
                window.open(link);
            }
            
        }
    </script>
    

访问表格子元素

在这里插入图片描述在这里插入图片描述
代码示例

<table id="d" border="1">
         <caption>疯狂java体系</caption>
         <tr>
             <td>疯狂java讲义</td>
             <td>轻量级javaee企业应用实战</td>
         </tr>
         <tr>
             <td>疯狂ajax讲义</td>
             <td>经典javaee企业应用实战</td>
         </tr>
         <tr>
             <td>疯狂xml讲义</td>
             <td>疯狂Android讲义</td>
         </tr>
     </table>
     <input type="button" value="表格标题" onclick="alert(document.getElementById('d').caption.innerHTML)">
     <input type="button" value="第一行第一格" onclick="alert(document.getElementById('d').rows[0].cells[0].innerHTML)">
     <input type="button" value="第二行第二格" onclick="alert(document.getElementById('d').rows[1].cells[1].innerHTML)">
     <input type="button" value="第三行第二格" onclick="alert(document.getElementById('d').rows[2].cells[1].innerHTML)">
     

效果图示:
在这里插入图片描述

修改HTML元素

在这里插入图片描述
代码示例:

	改变第<input type="text" name="" id="row" size="2">行,
      第<input type="text" name="" id="cel" size="2">列的值为:
      <input type="text" name="" id="celVal" size="16"><br>
      <input type="button" value="改变" id="chg" onclick="change()">
      <table id="d" border="1" style="width: 580px;border-collapse:collapse ;">
        <tr>
            <td>疯狂java讲义</td>
            <td>轻量级javaee企业应用实战</td>
        </tr>
        <tr>
            <td>疯狂ajax讲义</td>
            <td>经典javaee企业应用实战</td>
        </tr>
        <tr>
            <td>疯狂xml讲义</td>
            <td>疯狂Android讲义</td>
        </tr>
      </table>
      <script>
          var change = function(){
              //获取表格
              var tb =document.getElementById('d');
              //获取修改的行数
              var row = document.getElementById("row").value;
              row = parseInt(row);
              //判断合法
              if(isNaN(row)){
                  alert("您要修改的行必须是整数");
                  return false;
              }
              //获取修改的列
              var cel = document.getElementById("cel").value;
              cel = parseFloat(cel);
              //判断合法
              if(isNaN(cel)){
                  alert("您要修改的行必须是整数");
                  return false;
              }
              if(row>tb.rows.length||cel>tb.rows.item(0).cells.length){
                alert("要修改的单元格不在该表格内");
                return false;
              }
              //修改
              tb.rows.item(row-1).cells.item(cel-1).innerHTML = document.getElementById("celVal").value;
          }
      </script>

效果图示:
在这里插入图片描述

增加HTML元素

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
代码示例:

<ul id="d">
            <li>疯狂java讲义</li>

      </ul>
      <script>
          //给ul添加li
          var ul  = document.getElementById("d");
          var ajax = ul.firstChild.nextSibling.cloneNode(false);
          ajax.innerHTML = "疯狂ajax讲义";
          //ul.appendChild(ajax);//在末尾加
          ul.insertBefore(ajax,ul.firstChild)//在第一个孩子前面加,也就是头上
      </script>

在这里插入图片描述

为列表框、下拉菜单添加选项

在这里插入图片描述
在这里插入图片描述
代码示例:

<div id="body">
        
    </div>
      <script>
          //创建一个select
          var a = document.createElement("select");
          for (let i = 0; i < 10; i++) {
              var op = document.createElement("option");
              op.innerHTML = "新建选项"+i;
              a.add(op,null);          
          }
          a.size = 5;
          document.getElementById("body").appendChild(a);
      </script>

在这里插入图片描述

动态的添加表格内容

在这里插入图片描述
代码示例:

创建一个<input type="text" name="" id="row"><input type="text" name="" id="cell">,内容为<input type="text" name="" id="text">的表格
      <input type="button" value="创建" onclick="create()">
      <div id="xxx">

      </div>
      <script>
        var create = function (){
            var xxx = document.getElementById("xxx");
            xxx.innerHTML = "";
            var text = document.getElementById("text").value;
            var row = document.getElementById("row").value;
            row = parseInt(row);
            var cell = document.getElementById("cell").value;
            cell = parseFloat(cell);
            if(isNaN(row)){
                alert("创建表格的行必须是整数!");
                return false;
            }
            if(isNaN(cell)){
                alert("创建表格的列必须是整数!");
                return false;
            }
            if(row <= 0||cell <= 0){
                alert("输入数值不合法");
            }
            var b = document.createElement("table");
            b.style.width = '800px';
            b.style.borderCollapse = "collapse";
            b.border = 1;
            b.className = "table";
            var caption2 = b.createCaption();
            caption2.innerHTML = "表格标题";
            for (let i = 0; i < row; i++) {
                var tr = b.insertRow(i);
                for (let j = 0; j < cell; j++) {
                    var td = tr.insertCell(j);
                    td.style.padding = "5px";
                    td.innerHTML = text + i + j;
                }
                document.getElementById('xxx').appendChild(b);
            }
        }
          
      </script>

在这里插入图片描述

删除HTML元素

在这里插入图片描述

1.删除节点

在这里插入图片描述

删除列表框、下拉菜单的选项

在这里插入图片描述
代码示例:

<input type="text" name="" id="opValue">
      <input type="button" value="增加" id="add"  onclick="add()">
      <input type="button" value="删除" id="del" onclick="del()"><br>

      <select name="" id="show" size="8" style="width: 180px;"></select>
      <script>
          //动态添加option
          var show = document.getElementById("show");
          var add = function(){
             var op = new Option(document.getElementById('opValue').value)
             show.options[show.options.length] = op;
             document.getElementById('opValue').value = "";
          }
          var del = function(){
              if(show.options.length > 0){
                show.remove(show.options.length - 1);
              }
          }
      </script>

在这里插入图片描述

删除表格的行或单元格

在这里插入图片描述
代码示例:

<input type="button" value="删除表格最后一行" id="delrow" onclick='delrow()'><br>
      <input type="button" value="删除最后一行最后一列" id="delcell" onclick="delcell()"><br>
      删除第<input type="text" name="" id="row" style="width: 50px;">行,第
      <input type="text" name="" id="cel" style="width: 50px;">列的元素
      <input type="submit" value="删除" onclick="del_num()">
      <table id='table' border="1" style="width: 500px;">
        <caption>标题</caption>
        <tr>
            <td>1行第1</td>
            <td>1行第2</td>
        </tr>
        <tr>
            <td>2行第1</td>
            <td>2行第2</td>
        </tr>
        <tr>
            <td>3行第1</td>
            <td>3行第2</td>
        </tr>
      </table>
      <script>
          //获取table表格
          var tab = document.getElementById("table");
          //删除行
          var delrow = function(){
              if(tab.rows.length > 0){
                  //删除最后一行
                  tab.deleteRow(tab.rows.length - 1);
              }
          }
          //删除最后一行最后一列
          var delcell = function(){
            //获取表格所有行
              var rowList =tab.rows;
              var lastRow = rowList.item(rowList.length -1);
                if(lastRow.cells.length > 0){
                    lastRow.deleteCell(lastRow.cells.length - 1);
                }else{
                    delrow();
                    delcell();
                }
              
          }
          //删除指定行和列
          //获取对应的行数和列数
            var del_num = function(){
                var row = document.getElementById("row").value;
                var cell = document.getElementById("cel").value;
                row = parseInt(row);
                cell = parseInt(cell);
                if(isNaN(row)){
                    alert("表格的行必须是整数!");
                    return false;
                }
                if(isNaN(cell)){
                    alert("表格的列必须是整数!");
                    return false;
                }
                if(row <= 0||cell <= 0||row>tab.rows.length||cell>tab.rows[row-1].cells.length){
                    alert("输入数值不合法");
                }
                var ROW = tab.rows[row-1];
                ROW.deleteCell(cell - 1);
                if (ROW.cells.length == 0) {
                    tab.deleteRow(row-1);
                }
                
            }
            
      </script>

在这里插入图片描述

使用window对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

给状态栏添加动画文字

<body onload="stack()">
    <script>
        var statusText = "自定义动画状态栏文字";
        var out = "";
        //动画间隔时间
        var pause = 25;
        //动画宽度
        var animateWidth = 20;
        var position = animateWidth;
        var i = 0;
        var stack = function(){
            if(statusText.charAt(i)!= ""){
                out = '';
                //将0到i-1个字符拼成输出字符串
                for (var j = 0; j < i; j++) {
                    out += statusText.charAt(j);
                }
                for ( j = i; j < position; j++) {
                    out += " ";
                }
                //将第i个字符添加到输出字符串里
                out += statusText.charAt(i);
                for ( j = position; j < animateWidth; j++) {
                    out+=" ";
                }
                window.status = out;
                if(position == 1){
                    animateWidth++;
                    position = animateWidth;
                    i++;
                }else{
                    position--;
                }
            }else{
                i++;
            }
            if (i<statusText.length) {
                setTimeout("stack()",pause);
            }
        }

    </script>
</body>

访问页面URL

在这里插入图片描述

客户机屏幕信息

在这里插入图片描述
在这里插入图片描述

弹出窗口

弹出新窗口

在这里插入图片描述

确认对话框和输入对话框

在这里插入图片描述
在这里插入图片描述

使用定时器

在这里插入图片描述
代码示例:

<span id="tm"></span>
      <script>
          var timer;
          var cur = new Date().getTime();
          var setTime = function(){
              document.getElementById('tm').innerHTML=new Date().toLocaleString();
              if(new Date().getTime() - cur <= 60*1000){
                window.setTimeout("setTime();",1000);
              }
          }
          setTime();
      </script>

在这里插入图片描述
settimeout要用递归的形式才能实现一直循环

桌面通知

在这里插入图片描述
在这里插入图片描述

navigator和地理定位

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要打开位置信息
代码示例:

<script>
          var geoHandler = function(position){
            var geoMsg = '用户所在地理位置的信息是:<br/>';
            geoMsg += "timestamp属性为:"+position.timestamp +"<br/>";
            var coords = position.coords;
            for (var prop in coords) {
                geoMsg += prop + '->'+coords[prop] +"<br/>";
            }
            document.writeln(geoMsg);
          }
          var errorHandler = function(error){
            var errMsg = {
                1:"用户拒绝了位置服务",
                2:"无法获取地理位置信息",
                3:"获取地理位置信息超时"
            };
            alert(errMsg[error.code]);
          }
          navigator.geolocation.getCurrentPosition(geoHandler,errorHandler,{
              enableHighAccuracy:true,
              maximumAge:1000
          })
      </script>

在高德地图上定位:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=b9b98e2958b5414cccf88a34b5b27666    "></script> 

</head>
<body onload="init()">
      
      <div id="container" style="width: 100%;height: 100%;">

      </div>
      <script>
          function init(){
            navigator.geolocation.getCurrentPosition(function(position){
                var lnglat = [position.coords.longitude,position.coords.latitude];
                var map = new AMap.Map('container',{
                    resizeEnable:true,
                    zoom:16,
                    center:lnglat
                });
                var infoWindow = new AMap.infoWindow({
                    content:"我这里是我家"
                });
                infoWindow.open(map,lnglat);
            },
            function(error){alert("您的浏览器没有提供地理位置信息!");},
            {
                enableHighAccuracy:true,
                maximumAge:1000
            });
            
          }
      </script>
</body>
</html>

获取电池信息

在这里插入图片描述
在这里插入图片描述

历史记录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码示例:
jsp部分:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	String id = request.getParameter("id");
	String result = null;
	switch(id){
		case "one":
			result = "我是齐天大圣!";break;
		case "two":
			result = "我是天蓬元帅!";break;
		case "three":
			result = "我是沙和尚!";break;
		case "four":
			result = "我是白龙马!";break;
		case "five":
			result = "我东土大唐来取经的圣僧!";break;
	}
	out.println(result);
%>

html部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>首页</title>
    <style>
        table{
            display: inline-table;
            width: 320px;
            border: 1px solid lightgray;
            border-collapse: collapse;
            vertical-align: top;
            margin-right: 0px;
        }
        td{
            padding: 15px;
            cursor: pointer;
            border: 1px solid lightgray;
        }
        tr{
            background: linear-gradient(to right,#f6f6f6,#fff);
        }
        tr:hover{
            background: linear-gradient(to right,#eee,#f6f6f6);
        }
        div>div{
            display: inline-block;
            width: 400px;
            height: 300px;
            padding: 10px;
            box-sizing: border-box;
            border: 1px solid lightgray;
            margin-left: 0px;
        }
    </style>
</head>
<body>
    <div style="width: 725px;">
        <table border="1">
            <tr>
                <td title="one">
                    孙悟空
                </td>
            </tr>
            <tr>
                <td title="two">
                    猪八戒
                </td>
            </tr>
            <tr>
                <td title="three">
                    沙和尚
                </td>
            </tr>
            <tr>
                <td title="four">
                    唐僧
                </td>
            </tr>
            <tr>
                <td title="five">
                    白龙马
                </td>
            </tr>
        </table>
        <div id="show"></div>
    </div>
    <script>
        var xhr = new XMLHttpRequest();
        window.onload = function(){
            history.replaceState(null,"首页",'index.html?id=one');
        }
        var tdList = document.querySelectorAll("td");
        for (let i = 0; i < tdList.length; i++) {
            tdList[i].onclick = function(src){
                sendGet("books.jsp?id="+src.target.title);
                history.pushState({"cellTitle":src.target.title},"首页","index.html?id="+src.target.title);
                var tdList = document.querySelectorAll("td");
                for (let j = 0; j < tdList.length; j++) {
                    tdList[j].style = undefined;
                }
                src.target.style.background = 'linear-gradient(to right,#ddd,#eee)';
            }
            
        }
        function sendGet(url){ 
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4 && xhr.status == 200){
                    document.querySelector("#show").innerHTML = xhr.responseText;
                }
            }
            xhr.open("GET",url,true);
            xhr.send();
        };
        window.addEventListener("popstate",function(){
            var curTitle = history.state['cellTitle'];
            var tdList = document.querySelectorAll("td");
            for (let j = 0; j < tdList.length; j++) {
                if(tdList[j].title == curTitle){
                    tdList[j].style.background = 'linear-gradient(to right,#ddd,#eee)';
                }else{
                    tdList[j].style = undefined;
                }
            }
            queryStr = window.location.href.split("?")[1];
            sendGet("books.jsp?"+queryStr);
        })
    </script>
</body>
</html>

代码效果:点击按钮更换div内容,同时更新url地址,点击浏览器向前向后都可以进行访问

使用document对象

在这里插入图片描述
在这里插入图片描述

读写Cookie

在这里插入图片描述
在这里插入图片描述

分析时间性能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分析导航行为

在这里插入图片描述
代码示例:

<script>
        switch(performance.navigation.type){
            case 0 : alert("正常导航到该界面!");break;
            case 1 : alert("用户重新加载该界面!");break;
            case 2 : alert("用户前进到该界面!");break;
            default : alert("其他方法进入该页面!");break;
        }
    </script>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值