HTML-javascript(二)

3.HTML-javascript(二)

3.10 js 数组

3.10.1 数组的三种定义方式

<html>
    <head>
    	<script type="text/javascript">
    // 数组的三种定义方式
		var arr=[1,2"a",true];
            
		var arr=new Array(5);//定义一个长度为5的数字
        
		var arr=new Array(1,"1",3);//定义三个长度的数组

           
		</script>
    </head>
	<body>
        
    </body>
</html>

3.10.2 数组的属性和方法

<html>
    <head>
    	<script type="text/javascript">
  //属性
		//arr.length:数组的长度
//方法	
		//concat():连接数组
			var arr1=[1,2,3];
			var arr2=[4,5,6];
			document.write(arr1.concat(arr2));
		//join():把数组通过指定的字符分割成字符串
			var arr3=["a","b","c"];
			document.write(arr3.join("-"));//输出a-b-c 
		//push():向数组添加新的元素,并返回新的数组长度
			var arr=["zhangsan","lisi","wangwu"];
			document.write(arr+"-----arr.length  "+arr.length);

			document.write("<br/>");

			var newLength=arr.push("zhaoliu");
			document.write(arr+"-arr.new length  "+newLength);
			
			var arr1=["a","b","c"];
			var arr2=["1","2"];
			arr1.push(arr2);//返回4,数组中只有4个元素并且最后一个元素为1,2
		//pop():删除数组最后一个元素,并将这个元素返回
			var arr3=["qqq","wwww","eeee","rrrrr"];
			document.write("old arr:  "+arr3);
			document.write("<br/>");
			document.write(arr3.pop());
			document.write("<br/>");
			document.write("new arr:  "+arr3);
		//reverse():颠倒数组中元素的顺序
			var arr4=["a","b","c","d"];
			document.write("old arr:  "+arr4);
			document.write("<br/>");
			document.write("new arr:  "+arr4.reverse());
           
		</script>
    </head>
	<body>
        
    </body>
</html>

3.11 js的Date对象

<html>
    <head>
    	<script type="text/javascript">
  				//获取当前时间
                    var date=new Date();
                    document.write(date);//输出Tue Nov 15 2016 21:23:34 GMT+0800 (中国标准时间) 
                //格式化时间
                    date.toLocaleString()
                //获取当前的年
                    date.getFullYear();
                //获取当前的月份
                    date.getMonth()//返回0-11
                //获取当前的星期
                    date.getDay()//返回0-6
                //获取当前的天
                    date.getDate()
                //获取当前的小时
                    date.getHours()
                //获取当前的分钟
                    date.getMinutes()
                //获取当前的秒
                    date.getSeconds()
                //获取1970.1.1到现在的毫秒数
                    date.getTime();
		</script>
    </head>
	<body>
        
    </body>
</html>

3.12 js的Math对象(数学运算)

ceil():向上舍入

floor():向下舍入

round():四舍五入

random():得到0-1之间的随机数(伪随机)

得到0-10之间的随机整数的方法

Math.floor(Math.random()*10)

pow(x,y):返回x的y次幂

<html>
  <head>
    <title>Math</title>
	<script type="text/javascript">
		document.write("向下取整:"+Math.floor(1.5)+"<br/>");
		document.write("向上取整:"+Math.ceil(1.5)+"<br/>");
		document.write("四舍五入:"+Math.round(1.4)+"<br/>");
		document.write("随机数:"+Math.random()+"<br/>");
		document.write("次方计算:"+Math.pow(2,64)+"<br/>");
	</script>
  </head>
  
  <body>
  </body>
</html>

3.13 js的全局函数

//不属于任何一个对象的方法,可以直接调用
<html>
  <head>
    <title>Math</title>
            <script type="text/javascript">
                //eval()直接执行js代码
                var str="alert('aaa');";
                eval(str);
                //encodeURI():对字符进行编码
                 var c = "兆后面的单位";
                 alert(encodeURIComponent(c));
                //decodeURI():对字符进行解码
                alert(decodeURI("%E5%85%86%E5%90%8E%E9%9D%A2%E7%9A%84%E5%8D%95%E4%BD%8D"));
                 //  encodeURIComponent():类似encodeURI
                //  decodeURIComponent():类似decodeURI()
                //区别在于,不编码的字符数量有区别
                //isNaN()判断是否是数字,如果是数字返回false,否则返回true
                var str="123";
                alert(isNaN(str));
              // parseInt():把字符串转换成数字
                var str="123";
                document.write(parseInt(str)+1);

            </script>
  </head>
  
  <body>
  </body>
</html>

3.12 js的bom对象

23.12.1 bom : broswer object model(浏览器对象模型)
<html>
  <head>
    <title>bom对象</title>
            <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
            <script type="text/javascript">
               // navigator:获取客户机的信息(浏览器的信息)
                document.write(navigator.appName);
                document.write(navigator.appVersion);
                //screen:屏幕的宽高(火狐显示的是浏览器缩放宽高)
                document.write("<br/>"+screen.width+"*"+screen.height);
                //location:请求的url地址
                //href:获取或设置请求的url地址
                document.write("<br/>"+location.href);
                location.href="https://www.baidu.com";
                //history:请求url的历史记录
                //后退到上一个页面
                    history.back();
                    history.go(-1);
                //前进到下一个页面
                    history.forward();
                    history.go(1);
        
			</script>
  </head>
  
  <body>
    
  </body>
</html>

window方法及定时器方法

<html>
  <head>
    <title>bom对象</title>
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
	<script type="text/javascript">
//alert():简单提示框
				var str="aaa";
				//alert(str);
//confirm(message):确认取消框
				var str1="是否删除";
				var flag=confirm(str1);
				if(flag==true){
					alert("删除成功");
				
				}else{
				alert("删除失败");
				}
//prompt(str1,str2):输入对话框
			str1:提示文字
		str2:输入框的默认值
		var str=prompt("请输入手机号","18000000000");//有返回值,点确定返回输入框的内容,取消返回null
			alert(str);
//open(str1,str2,str3):打开一个新的窗口
				str1:新窗口的url地址
				str2:name,可省略
				str3:新窗口的特征,比如宽高
			
//close():关闭窗口,兼容性特别差

//setInterval(js代码,毫秒数):隔多少毫秒执行一次js代码
				返回一个ID
			
//setTimeout(js代码,毫秒数):在多少毫秒后执行一次js代码,且只会执行一次
				返回一个ID

//clearInterval(ID):清除setInterval设置的定时器

//clearTimeout(ID):清楚setTimeout设置的定时器
			function dingshiqi(){
				alert("aaa");
			}
			//设定一个弹框方法,每隔4秒执行一次
			//var inid=setInterval("dingshiqi()",4000);
			//设定一个弹框方法,4秒后只执行一次
			var tiid=setTimeout("dingshiqi()",4000);
			function clear1(){
				//清除重复调用的定时器
				clearInterval(inid);
				//清除一次调用的定时器
				clearTimeout(tiid);
			}

	</script>
  </head>
  
  <body>
    
  </body>
</html>

3.13 js的dom对象

3.13.1 document object model : 文档对象模型
		文档    	 :      超文本文档,

		对象 	: 	提供了属性和方法

		模型	 : 	使用方法和属性操作文档

	想要操作这些文档,需要把这些文档封装成对象,比如标签,ID,文本;

		解析过程:

		根据html的层级结构,在内存中分配一个树形结构,把html的每部分都封装成对象

		document对象	:	整个文档

		element对象		:	标签

		属性对象			: 	name,id

		文本对象 		: 	文本值

		Node对象	:		所有对象的父对象,若对象里面方法找不到,在node对象中找

	dom模型的变迁

		DOM level 1	:	专注于 HTML 和 XML 文档模型。它含有文档导航和处理功能。

		DOM level 2	:	在DOM Level 1的基础上,添加了样式表对象模型,定义了一个事件模型,

						并提供了对XML命名空间的支持。

		DOM level 3	:	在DOM Level 2的基础上,规定了内容模型 (DTD 和 Schemas) 

						和文档验证。同时规定了文档加载和保存、文档查看、文档格式化和关键事件

	DHTML		:	不是语言,是很多技术的简称

			html	:	封装数据

			css		:	使用属性和属性值的设置样式

			dom	:	操作html文档

			javascript:	专门指的是js的语法语句

3.14 document对象

<html>
  <head>
    <title>Math</title>
	<script type="text/javascript">
	//	write;
		//1:向页面输出内容
		//2:向页面输出html代码
	
	//getElementById()
		//获取第一个拥有指定id的标签对象。
		 var ip1=document.getElementById("ip1");
		 alert(ip1.value);
	//getElementsByName()
		//根据name获取一个对象数组
		//通过name属性获取name为li11的对象的集合
		var lis=document.getElementsByName("li11");
		//alert(lis.length);
	//getElementsByTagName()
		//根据标签名获取对象数组
		//通过标签名获取li的集合
		var lis1=document.getElementsByTagName("li");
		alert(lis1);
       // 案例:动态添加列表节点
		Element.appenChild();添加一个子元素
		document.createElement(tagName) 通过标签名创建一个标签对象
		document.createTextNode(content) 创建一个文本对象
	</script>
  </head>
  
  <body>
  </body>
</html>

3.15 标签对象(element)

<html>
  <head>
    <title>Math</title>
	<script type="text/javascript">
		//要操作element,必须先通过document.getElement...获取到对象
	
		//获取属性的值
		input1.getAttribute("value")//获取元素的value值
	
		//设置属性和值
		input1.setAttribute("value","11111")//设置元素value值为"11111"

		//删除属性
		input1.removeAttribute("name")
		//注意**不能删除value的值

	//获取标签下面的子标签
		//(1)使用属性childeNodes,但是兼容性很差
		//(2)唯一有效的办法:getElementsByTagName方法
        
        
        
 //操作dom树       
        
       
             //appendChild方法需要一个新的节点(li)
                        //先创建一个新的li节点
                            //1 新建li
                            //2 新建文本
                            //3 把文本添加到li上
                        //找到要添加节点的父节点
                        //调用父节点的appendChild

                        //新建li
                        var newLi=document.createElement("li");
                            //找到要添加节点的父节点
                        var ul1=document.getElementById("ul1");
                        //通过父节点查找里面有多少个子节点,然后把子节点的数量加1,当做新节点的文本
                        var lis=ul1.getElementsByTagName("li");
                        var len=lis.length+1;
                        //新建文本节点
                        var newText=document.createTextNode(len);
                        // 把文本节点添加到新建的li上
                        newLi.appendChild(newText);
                        //调用父节点的appendChild把新建的li添加到父节点上
                        ul1.appendChild(newLi);
                        //剪切效果
                             // 1 获取ul节点对象
                            // 2 获取div2对象
                            // 3调用div2的appendchild方法
                        var ul1=document.getElementById("ul1");
                        var div2=document.getElementById("div2");
                        div2.appendChild(ul1);
        
      
        
        
        
          //insertBefore(newNode,oldNode):在某个节点之前添加一个节点
                        //newNode:新节点
                        //old:旧节点
                        /*
                        1 新建一个节点
                            1) 新建节点
                            2) 新建文本节点
                            3) 把文本节点放入新建的节点中
                        2 找到要在哪个节点前插入
                        3 找到父节点
                        4 调用插入方法
                        */
                        function add1(){
                            //新建li节点
                        var newLi =document.createElement("li");
                        //新建文本节点
                        var newText = document.createTextNode("苏妲己");
                        //把文本节点放入新建的节点中
                        newLi.appendChild(newText);
                        //找到要在哪个节点前插入语
                        var li4=document.getElementById("li4");
                        //找到父节点
                        var ul1=document.getElementById("ul1");
                        //调用父节点的插入方法
                        ul1.insertBefore(newLi,li4);
                        }
        
        
        
       // removeChild:删除节点
                     //只能通过父节点删除,不能自己删除自己

                    /*
                    1 找到要删除的节点
                    2 找到父节点
                    3 调用父节点的删除方法删除
                    */
                    var liy=document.getElementById("liy");
                    var ul1=document.getElementById("ul1");
                    ul1.removeChild(liy);

        
        
        //replaceChild(newNode,oldNode):替换节点
                    //newNode:新节点
                    //old:旧节点

                    /*
                        1 新建一个节点
                            1 新建节点li
                            2 新建文本节点
                            3 把文本节点添加到新li节点上
                        2 找到要换掉的节点对象
                        3 获取父节点
                        4 父节点来调用替换方法
                    */
                    //新建节点li
                    var newLi=document.createElement("li");
                    //新建文本节点
                    var newText=document.createTextNode("杨康");
                    //把文本节点添加到新li节点上
                    newLi.appendChild(newText);
                    // 找到要换掉的节点对象
                    var li1=document.getElementById("li1");
                    //获取父节点
                    var ul1=document.getElementById("ul1");
                    //父节点来调用替换方法
                    ul1.replaceChild(newLi,li1);
        
        
        //cloneNode(boolean):复制节点,参数控制是否复制其中的子节点
                    /*
                        1 找到要复制的节点
                        2 调用cloneNode方法
                        3 找到要添加的div
                        4 添加到div里面
                    */
                    // 找到要复制的节点
                    var ul1 =document.getElementById("ul1");
                    //调用cloneNode方法,必须接受这个新的克隆对象
                    var copyUl=ul1.cloneNode(true);
                     //找到要添加的div
                    var div2=document.getElementById("div2");
                    //添加到div里面
                    div2.appendChild(copyUl);

        
        
        
	</script>
  </head>
  
  <body>
  </body>
</html>

3.16 inner HTML

<html>
  <head>
    <title>Math</title>
		<script type="text/javascript">
                //不是DOM的标准属性,但是基本所有浏览器都支持

                //获取标签内容
                    //var input = document.getElementById("span");
                    //var str = input.innerHTML;
                //设置标签内容
                    //input.innerHTML="bbbbbbbbbb";
                //也可以设置html代码
                    var div = document.getElementById("div");
                    div.innerHTML="<font color='red'>aaa</font>";            
		</script>
  </head>
  <body>

  </body>
</html>

3.17 node对象属性

  1. nodeName
  2. nodeType
  3. nodeValue

使用dom解析html的时候,会把所有标签、属性、文本封装成对象,但是这些对象的node属性各不相同

<html>
  <head>
    <title>Math</title>
		<script type="text/javascript">
            	var span1=document.getElementById("span1");
                //alert(span1.nodeName);//span
                //alert(span1.nodeType);//1
                //alert(span1.nodeValue);//null

                var sid=span1.getAttributeNode("value");
                alert(sid.nodeName);//value
                alert(sid.nodeType);//2
                alert(sid.nodeValue);//aaa


                var textNode=span1.firstChild;
                alert(textNode.nodeName);//#text
                alert(textNode.nodeType);//3
                alert(textNode.nodeValue);//1111111  
            
            //父节点
				//ul是li的父节点,可以通过li的parentNode属性获取
				var li1=document.getElementById("li1");
				var ul1=li1.parentNode;
            //子节点
               // li是ul的子节点
                //childNodes:获取所有子节点,兼容性差
                //lastChild:获取最后一个子节点
                //firstChild:获取第一个子节点,不会忽略空格和换行,会导致不准确
                    var ul1=document.getElementById("ul1");
                    var li1=ul1.lastChild;
                    alert(li1.id);
                //childNodes:获取所有的子节点,不会忽略空格和换行,会导致不准确

                //唯一有效的方法是
                    var ul1=document.getElementById("ul1");
                    var lis=ul1.getElementsByTagName("li");
                    alert(lis.length);
            
            //同辈节点
				//nextSibling:下一个同辈节点,不会忽略空格换行
            
		</script>
  </head>
  <body>
		<span id="span1" name="sp1" value="aaa">1111111</span>
      
      	 <ul id="ul1">
			<li id="li1">1111</li>
			<li id="li2">qqqq</li>
		 <li id="li3">aaaa</li>
	</ul>
  </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值