jsDOM对象及练习

1.什么是DOM

  1. DOM:Document Object Model 文档对象模型,定义访问和操作结构化文档(HTML)的方式。

    • 创建的结构化文档:html、xml 等

    • DOM包括:核心DOM、HTML DOM、XML DOM。通常情况下HTML DOM 和XML DOM是可以相互使用的。

  2. HTML DOM 将 整个HTML文档呈现成一颗DOM树,树中有元素、属性、文本等成员


2.document文档对象 

浏览器加载整个HTML文档形成document 对象,document 对象可以访问和操作HTML文档中的所有元素。

1.标签元素的操作

  1. 根据id获得一个元素:getElementById(id属性值)

  2. 根据标签名称获得多个元素:getElementsByTagName(标签名称)

  3. 根据class属性获得多个元素:getElementsByClassName(class的属性值)

  4. 根据name属性获得多个元素:getElementsByName(name属性值)

  5. 创建一个新元素createElement()

  6. 将元素放到某个父元素的内部appendChild()

  7. 标签体的获取与设置:innerHTML / innerText

2.属性的操作

  1. 获得属性的值:getAtrribute(name)

  2. 设置属性的值:setAtrribute(name,value)

  3. 删除某个属性:removeAtrribute(name)

练习  

//练习一:
	<script type="text/javascript">
    //输出 <input type="text" name="username" value="张三"  id="tid" >标签value属性的值
    var tidElement = document.getElementById("tid");
    alert(tidElement.value);
        //输出 <input type="text" name="username" value="张三"  id="tid" >标签type属性的值
        alert(tidElement.type);
  </script>

//练习二

	<script  type="text/javascript">
    //获取所有的input元素,返回值是数组 
    var inputs = document.getElementsByTagName("input");
        alert(inputs.length);
    //遍历value的值
    for(var i=0;i<inputs.length;i++){
     alert(inputs[i].value); 
    } 
     //输出type="text"中 value属性的值 不包含按钮(button)
        for(var i=0;i<inputs.length;i++){
            if(inputs[i].type=="text")
     alert(inputs[i].value);
    } 
    //输出所有下拉选 id="edu"中option标签中 value属性的值 
    var eduElement = document.getElementById("edu");
    var eduOptions = eduElement.getElementsByTagName("option");
    for(var i=0;i<eduOptions.length;i++){ 
     alert(eduOptions[i].value);
    }    
    function showSelect(){ 
        //输出所有下拉选select的option标签中value的值
        //输出选中的值
        var options = document.getElementsByTagName("option"); 
        for(var i=0; i< options.length;i++){
            if(options[i].selected)
                alert(options[i].value);
        }
    }
  </script>

//练习3


	 <script type="text/javascript">
   //通过元素的name属性获取所有元素的引用  name="tname"
   //测试该数据的长度
   //遍历元素,输出所有value属性的值
   var inputs = document.getElementsByName("tname");
   /*for(var i=0;i<inputs.length;i++){
      alert(inputs[i].value);
   }*/ 
   //为每个文本框(<input type="text">)增加chanage事件,当值改变时,输出改变的值
   for(var i=0; i<inputs.length;i++){ 
        inputs[i].onchange=function(){
            alert(this.value);
        }
   }
  </script>

//练习4:

	     <script  type="text/javascript">
      //<li id="xj" value="xingji">EDG冠军</li>节点的value属性的值 
        var xjElement = document.getElementById("xj");
        alert(xjElement.getAttribute("value"));
  </script>

//练习5:


	  <script type="text/javascript">
      //给这个节点增加 name属性 <li id="xj" value="xingji" name="xingjizhengba">星际争霸</li>
        var xjElement = document.getElementById("xj"); 
        xjElement.setAttribute("name","xingjizhengba"); 
       //测试 
      alert(xjElement.getAttribute("name"));
  </script>

//练习6

     <script type="text/javascript">
    window.onload=function(){        
        //在div层中插入 <h1>海马</h1>
    var cityElement = document.getElementById("city");
    cityElement.innerHTML="<h1>海马</h1>";
        //在div层中插入“海马” 文本
        //cityElement.innerHTML="海马";
      //读取div的标签体内容
      alert(cityElement.innerHTML);
      //读取div的标签体文本内容
      alert(cityElement.innerText);
    }
  </script>

//练习8:

	<script  type="text/javascript">
         //删除<ul id="city"> 下<li id="bj" name="beijing">北京</li>这个节点</ul>
         var cityElement = document.getElementById("city");
         var bjElement = document.getElementById("bj");
         //cityElement.removeChild(bjElement);
            //获取北京的父节点
            var parent = bjElement.parentNode;
            alert(parent.id);
  </script>
//练习9:
	  <script type="text/javascript">
         //点击北京节点, 将被反恐节点替换
         var bjElement = document.getElementById("bj");
         bjElement.onclick = function(){
            var cityElement = document.getElementById("city");
            var fkElement = document.getElementById("fk");
            cityElement.replaceChild(fkElement,bjElement);
         }
  </script>


// DOM练习10:

  <script  type="text/javascript">
     //增加城市节点 <li id="tj" v="tianjin">天津</li>放置到city下
     var cityElement = document.getElementById("city");
     var tjElement = document.createElement("li");
     tjElement.innerHTML="天津";
     tjElement.setAttribute("id","tj");
     tjElement.setAttribute("value","tianjin");
     cityElement.appendChild(tjElement);
  </script>

//练习11:
     <script  type="text/javascript">
    // 在重庆前面插入新的节点 
     <li id="tj" name="tianjin">天津</li> 
     var cityElement = document.getElementById("city");
     var tjElement = document.createElement("li");
     tjElement.innerHTML="天津";
     tjElement.setAttribute("id","tj");
     tjElement.setAttribute("value","tianjin");
     var cityElement = document.getElementById("city");
     var cqElement = document.getElementById("cq");
     cityElement.insertBefore(tjElement,cqElement);
  </script>

onload():

  1. onload() 页面加载成功触发

    • 方式1:<body>使用onload属性确定需要执行的函数

      
       <head>
          <meta charset="UTF-8">
          <title></title>
          <script type="text/javascript"> 
              //js代码在<body>之前,不能获得<body>标签体中的内容,还没有加载到
              var e01 = document.getElementById("e01");
              alert(e01);  //打印:null
              function init () {
                  //页面加载成功之后执行
                  var e02 = document.getElementById("e01");
                  alert(e02.value);   //打印:哇哈哈
              }
          </script>
      </head>
      <body onload="init()">
          <input type="text" name="" id="e01" value="哇哈哈" />
      </body>
      
      

      方式2:  通过window.onload 设置匿名函数

      
      <head>
          <meta charset="UTF-8">
          <title></title>
           <script type="text/javascript">
              window.onload = function () {
                  //页面加载成功之后执行
                  var e02 = document.getElementById("e01");
                  alert(e02.value);   //打印:哇哈哈
              }
          </script>
      </head>
      <body>
          <input type="text" name="" id="e01" value="哇哈哈" />
      </body>
      
      

 2.this关键字

//this:在函数内部this表示:当前操作的元素。
	 <script type="text/javascript">
            //页面加载完成事件
            window.onload = function(){
                //获取所有的tr标签
                var trs = document.getElementsByTagName("tr");
                //从2开始遍历数组
                for(var i=2;i<trs.length;i++){
                    //索引的奇偶数判断
                    if(i%2==0){
                        trs[i].style.backgroundColor="#FFFAE8";
                    }else{
                        trs[i].style.backgroundColor="#9B70A9";
                    }
                    //定义变量,保存变化后的颜色
                    var color="";
                    //每行注册鼠标的移入事件
                    trs[i].onmouseover = function(){
                        //记录修改后的颜色
                        color=this.style.backgroundColor;
                        this.style.backgroundColor="#ccc";
                    }
                    //每行注册鼠标移出事件 
                    trs[i].onmouseout = function(){
                        this.style.backgroundColor=color;
                    }
                }
            }
        </script>

全选全不选


	 <input type="checkbox" onclick="selectAll(this)" > 
        //步骤:编写selectAll(this)处理列表项的复选框是否勾选
        <script type="text/javascript">
            function selectAll(check){
                var checkboxs = document.getElementsByClassName("itemSelect");
                var checked = check.checked;
                for(var i=0;i<checkboxs.length;i++){
                     checkboxs[i].checked=checked;
                }          
            }
        </script>

 JavaScript内置对象

  String对象

  1.   JS的对象也分为内置对象和定义对象,Java中Object,String,System属于内置对象,自定义的Person,Student属于自定义的对象.

  2.   JS的自定义对象是函数实现的

    
    	     <script type="text/javascript">
            /*
                String对象 
            */
            var str = "abc"// typeof 输出string
            var str2 = new String(str); //typeof 输出 object
            //以上定义方式,都可以使用String对象的方法
            var s = "a-b-c-de-FG";
            //字符串的长度
            //alert(s.length);. 
            //指定索引找字符
            //alert(s.charAt(1));
            //字符第一次出现的索引
            //alert(s.indexOf("c"));
            //字符最后一次出现的索引
            //alert(s.lastIndexOf("c"));
            //切割字符串
            /*var strArr = s.split("-");
            for(var i = 0 ; i < strArr.length;i++){
                alert(strArr[i]);
            }*/
            //获取索引之间的字符
            //alert(s.substring(1,3));
            //获取索引开始到长度的字符
            //alert(s.substr(1,3));
        </script>
    
    

 Math对象

  Math是数学计算的对象,此对象无需创建,直接Math.调用


	       <script type="text/javascript">
            /*
              Math对象
                 直接调用
            */
            //向上取整
            alert(Math.ceil(3.14));
            //向下取整
            alert(Math.floor(3.14));
            //四舍五入取整
            alert(Math.round(3.14));
        </script>

 Array数组对象 


	 <script type="text/javascript">
            /*
                   数组对象定义方式
              new Array();
              new Array(size);
               new Array(element0, element0, ..., elementn);
            */
            //定义数组对象
            var arr1 = new Array(); 
            //赋值元素
            arr1[0] = 1;
            arr1[1] = "a"; 
            arr1[2] = 2.2;
            alert(arr1);
            //定义数组对象
            var arr2 = new Array(3);
            //打印数组长度
            alert(arr2.length);
            //定义数组对象
            var arr3 = new Array(3,4,5,"a",true);
            alert(arr3);
            //开发中最常用方式 
            var arr4 = [1,2,3,4,"a","b","c"];
            for(var i = 0 ; i< arr4.length;i++){ 
                alert(arr4[i]);
            }    
            //定义二位数组 
            var arr5 = [
               [1,2,3],["a",4,"b"],[true,5,false]
            ];
            //打印3
            alert(arr5[0][2]);
            //打印a
            alert(arr5[1][0]); 
            //打印false 
            alert(arr5[2][2]);
        </script>

 RegExp正则表达式对象

JS中的正则表达式和Java中的正则表达式相似


	   定义方式: 直接定义和创建对象方式
        <script type="text/javascript"> 
            /*
                   正则表达式定义
                   1. new RegExp对象
                   2. 正则被定义在俩个//内                  
                   [0-9][a-z][A-Z]{5}
                   ^匹配开头
                   $匹配结尾 
            */
            var reg = new RegExp("^[0-9]{5}$"); 
            //正则对象方法test,测试与字符串是否匹配
            var flag = reg.test("a2345");
            alert(flag);  
            var reg1 = /^[0-9]{5}$/;
            flag = reg1.test("6789 ");
            alert(flag);
        </script>

经典练习

省市二级联动

<select id="provinceId" onchange="selectCity(this.value)" style="width:150px">
    <option value="">----请-选-择-省----</option>
    <option value="0">北京</option>
    <option value="1">吉林省</option>
    <option value="2">山东省</option>
    <option value="3">河北省</option>
    <option value="4">江苏省</option>
</select>
<select id="cityId" style="width:150px"> 
    <option value="">----请-选-择-市----</option> 
</select>


	 <script type="text/javascript">
            // 定义二维数组:存储省市信息 
                var pros = [
                  ["朝阳","海淀","昌平"],["长春市","锦州市","吉林市"],["南京市","苏州市","徐州市"]
                ];
            function selectCity(province){
                //获取选中省份的市数组
                var cityArr = pros[province];
                //获取城市的select标签对象
                var cityEle = document.getElementById("cityId");                
                //添加之前先清空option子标签 
                cityEle.innerHTML="";
                //创建请选择的option子标签
                var optionEle = document.createElement("option");
                optionEle.innerHTML="----请-选-择-市----";
                cityEle.appendChild(optionEle);
                //遍历数组,几个元素就创建几个子option标签
                for(var i = 0;i < cityArr.length;i++){
                    //创建子标签
                    var optionEle = document.createElement("option");
                    //设置子标签的标签体内容
                    optionEle.innerHTML=cityArr[i];
                    //添加子标签 
                    cityEle.appendChild(optionEle); 
                }   
            }   
        </script>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值