js 函数&BOM编程[window、location、history]

1.基本用法

JavaScript函数


    1.1 概述
    函数可以把代码封装起来,并且可以重复调用,完成特定功能的代码块

    1.2 函数分类
    1.2.1 系统函数
        "alert(123)";
        eval(<表达式>:将其中的参数字符串作为一个javascript表示式进行执行并返回结果。
    
        parseInt("字符串"):将字符串转换为整型数字

        parseFloat("字符串"):将字符串转换为浮点型数字

        isNaN():判断参数是否是NaN(不是数字),如果是NaN,那么isNaN函数返回true,否则返回false。

1.2.2 自定义函数

        (1)无参函数
        function 函数名(){
                //javascript代码;
        }
        
        (2)有参函数
        function 函数名(参数1,参数2,...){
                //javascript代码;
        }
 
        (3)带返回值函数(无参)
        function 函数名(){
                return 返回值或变量;
        }

        (4)带返回值函数(有参)
        function 函数名(参数1,参数2,...){
                return 返回值或变量;
        }

1.2.3 自定义函数的定义方式


        (1)显示定义 function xxxName(){}
        (2)匿名定义 var method = function(){}
        (3)Function定义 var calSum3 = new Function('num1', 'num2', 'return num1 + num2');

    1.2.4 自定义函数的调用方式
        (1)外部调用  HTML标签上
        (2)内部调用 类似Java
        (3)函数调用函数

BOM编程(Browser Object Model)


    3.1 BOM概述
    (1)BOM(Browser Object Model)即浏览器对象模型。
         (2)BOM提供了独立于内容 而与浏览器窗口进行交互的对象;
        (3)由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window;
       (4)BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性;
      (5)BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C,BOM最初是Netscape浏览器标准的一部分。

    【结构图分析】
    window:代表整个浏览器窗口(window是BOM中的一个对象,并且是顶级的对象),作用:移动、调整浏览器大小
    location: 代表浏览器当前的地址信息,通过Location我们可以获取或者设置当前的地址信息
    history:代表浏览器的历史信息,通过History我们可以实现上一步/刷新/下一步操作(出于对用户的隐私考虑,我们只能拿到当前的浏览记录,不能拿到所有的历史记录)
    navigator:代表浏览器当前的信息,通过Navigator我们可以获取用户当前使用的是什么浏览器
    screen:代表用户的屏幕信息
    document:访问HTML文档的入口

 3.2 常用方法:


    prompt: 显示可提示用户输入的对话框
    alert: 显示带有提示信息和确定按钮的对话框
    confirm: 显示一个带有提示信息、确定和取消的对话框
    
    --window.open("1.html");//打开新的指定页面  【注意路径级别】
    --location.href("1.html");//不打开新页面的前提下直接进入新页面
    --location.reload();//刷新当前页面
    --window.close();//关闭当前页面
    --history.back();//返回 必须有历史记录 history.go(-1)
    --history.forward();//前进 必须有历史记录 history.go(1)

    setTimeout: 指定的延迟时间之后来执行代码(一次性计时器)
    setInterval: 每隔指定的时间执行代码(间隔性触发计时器)

    清除设置的定时器方法
    clearInterval():清除setInterval()设置的定时器
    clearTimeout():清除setTimeout()设置的定时器

    3.3 常用事件:
    onload:一个页面或一个图像完成加载
    onmouseover:鼠标移到某元素之上
    onclick:点击对象
    onkeydown:某个按键按下
    onchange:域的内容被改变

四、匿名调用函数


匿名函数:没有名字的函数。

例1:
onload()
            ①<body οnlοad="myf()">//直接放在body里 等body加载完毕后才执行

            ②function test(){
                alert("哈哈哈");
              }
              window.οnlοad=test;

            ③window.οnlοad=function(){
                alert("哈哈哈");匿名函数
             }


五、时间对象


Date对象:时间对象、日期对象。

    格式:
    var 日期对象=new Date(参数)
    //获得当前日期,参数格式:MM DD,YYYY,hh:mm:ss:ms

    案例:
    var today=new Date(); //返回当前日期和时间
    var tdate=new Date("september 1,2015,12:23:33");

    Date对象的方法:
    setXxx:设置时间
    getXxx:得到时间
    
    Xxx包括:
    FullYear: 当前年
    Month:    0~11(一月至十二月)
    Day:      0~6(星期几)
    Date:     1~31
    Hours:    0~23
    Seconds和Minutes:0~59

案例:
var today=new Date(); //获取当前时间
var year=today.getFullYear(); //得到年
var month=today.getMonth(); //得到月
var day=today.getDay(); //得到星期几
var date=today.getDate(); //得到日
var hh=today.getHours(); //得到时
var mm=today.getMinutes(); //得到分
var ss=today.getSeconds(); //得到秒


//将字符串的值写入到html中某个ID中
var dd=year+"年"+month+"月"+date+"日";
var da=document.getElementById("da");
da.innerHTML=dd;  //innerHTML获取对象的内容或向对象插入内容


让时间一直在显示:setInterval()方法

function mm(){

   //每隔1秒自动执行
   setInterval("函数名",1000); 


   //等待1秒后执行一次

 setTimeout("函数名",1000); 
}

六、数学函数Math


Math.abs(x)    //返回数的绝对值
Math.ceil(x)   //返回比x大的最小整数  Math.ceil(34.5)--35
Math.floor(x)  //返回比x小的最大整数  Math.floor(34.5)--34
Math.random()  //返回0~1之间的随机数
Math.round(x)  //四舍五入取整
Math.sqrt(x)   //返回数的平方根

 2.简易计算器的制作

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
		//封装一个函数:根据id返回其对应的标签
		function $(id){
			return document.getElementById(id);
		}

		//实现加法运算
		function add(type){
			//获取第一个输入框和第二个输入框中的value值
			var num1 = $('num1').value;
			var num2 = $('num2').value;
			//获取到第三个输入项的值
			var num3 = $('num3');
			// console.log(num1,num2);
			//判断非空
			// if(num1.trim().length == 0 || num1.trim() == ''){
			// 	alert("不能为空");
			// }
			// 终极写法  非空判断  
			if(!num1 || !num2){
				alert('不能为空');
			}else{//不为空
				//根据isNaN判断是否为非数字
				if(!isNaN(num1) && !isNaN(num2)){
					var sum = 0;
					//判断参数type的结果到底是+ - * /
					if(type === '+'){
						sum = parseFloat(num1)+parseFloat(num2);
					}else if(type === '-'){
						sum = parseFloat(num1)-parseFloat(num2);
					}else if(type === '*'){
						sum = parseFloat(num1)*parseFloat(num2);
					}else if(type === '/'){
						sum = parseFloat(num1)/parseFloat(num2);
					}

					
					//将加法运算的结果赋值给第三个输入项
					num3.value = sum;
				}else{
					alert('输入项中的内容不符合要求');
				}
			}
		};
	</script>
</head>
<body>
	<h3>史上最Low计算器</h3>
	<hr>
	第一个数字 <input id="num1" type="text">
	<br>
	第二个数字 <input id="num2" type="text">
	<br>
	<button onclick = "add(this.innerHTML);">+</button>
	<button onclick = "add('-');">-</button>
	<button onclick = "add('*');">*</button>
	<button onclick = "add('/');">/</button>
	<br>
	结果 <input id="num3" type="text">

</body>
</html>

定时器 的基本使用与open打开与关闭网页

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
		//BOM---window对象
		//代表整个窗口
		//alert()confirm() prompt();
		//可以根据window调用,当然可以省略
		// alert(123);
		// window.alert(123);
		
		// 在script标签中所定义的任意全局属性以及任意全局方法  都会默认成为window部分之一.
		// var sb = 123;
		// alert(window.sb);
		
		//open();打开一个新窗口
		function myOpen(){
			//点击按钮打开新窗口:4399
			// window.open("http://www.4399.com");

			window.open("http://www.baidu.com","low",'height=400,width=500');
		}
		//关闭网页
		function myClose(){
			var flag = window.confirm('你确定要分手吗?');
			if(flag){
				window.close();
			}
		}
		

		// window对象的定时器==倒计时|轮播器|时钟
		// setTimeout(回调函数,毫秒值)---一次性
		// setInterval()---循环性
		
		//clearTimeout(定时器);清除定时器
		//clearInterval();清除定时器 
		//
		//案例:3秒后执行1次好好学习
		var timer = window.setTimeout(function(){
			console.log('好好学习')
		},3000);

		//在2秒时  手动停止
		function myClearTimeout(){
			console.log("我点击了停止");
			window.clearTimeout(timer);
		}


		//封装一个函数:根据id返回其对应的标签
		function $(id){
			return document.getElementById(id);
		}
		//对于非表单元素而言,获取其标签中的文本内容通过innerHTML
		function sendMessage(){
			var oBtn = $('oBtn');
			// 禁用标签
			oBtn.disabled = true;
			var date = 3;//10秒
			//定时器
			var timer = window.setInterval(function(){
				//判断
				if(date == 0){
					oBtn.disabled = false;//启用
					oBtn.innerHTML = '发送短信';
					date = 3;
					//停止定时器
					window.clearInterval(timer);
				}else{//date不为0
					oBtn.innerHTML = date;
					date--;
				}
				
			},1000);
		}
	</script>
</head>
<body>
	<button onclick="myOpen();">open演示</button>

	<button onclick="myClose();">close演示</button>

	<hr>
	<button onclick="myClearTimeout();">停止clearTiemout定时器</button>
	
	<hr>

	<input type="text">
	<button id="oBtn" onclick="sendMessage();">发送短信</button>
</body>
</html>

window中得加载事件的使用 等body中代码执行完后再执行

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
		// HTML网页的执行流程:从上往下  从左往右依次执行
		// window对象的特殊事件--加载事件(onload)
		// script标签的位置:head标签中  body标签中
		

		// 需求:根据id属性获取div标签(body中  没有问题)
		// var oDiv = document.getElementById("oDiv");
		// console.log(oDiv.innerHTML);
		//针对上面的获取问题  解决方案   加载事件
		//
		//加载事件的目的:等网页的所有内容全部加载完毕后,onload加载事件中的逻辑才会去执行.
		//
		//注意事项:一个网页中只能编写一个onload加载事件
		
		 window.onload = function(){
		 	var oDiv = document.getElementById("oDiv");
	 	console.log(oDiv.innerHTML);
		 };
		
		// window.onload = function(){
		// 	alert(123);
		// };

		// 手动添加事件方法
		
		//少用
		window.addEventListener('load',function(){
			console.log(123);
		}); 
		window.addEventListener('load',function(){
			console.log(456);
		}); 


		// $(function(){});  jQuery的加载函数  可以写多个 
	</script>
</head>
<body>
	<div id="oDiv">
		我是div标签内容
	</div>

	<script type="text/javascript">
		// var oDiv = document.getElementById("oDiv");
		// console.log(oDiv.innerHTML);
	</script>
</body>
</html>

history 历史记录前进与后退  的使用

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<!-- js -->
	<script type="text/javascript">

		// history 历史记录  (前进  后退)


		function next(){
			history.forward();//前进
		}

	</script>
</head>
<body>
	<h1>demo7.html</h1>
	<a href="demo8.html">跳转到下一章节</a>
	<button onclick="next();">前进</button>
</body>
</html>

后退

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script type="text/javascript">
	function back(){
		history.back();
	}

	</script>
</head>
<body>
	<h1>demo8.html</h1>
	<a href="demo7.html">返回上一章节</a>
	<button onclick="back();">后退</button>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值