javaScript

学习javaScript过程中,一些练习Demo。在之前跟着老师学的过程中,感觉js的语法知识和java基本一致,所以前面的基础知识过的很快。目前在学Dom编程,练习的一些例子作为自己学习过程的见证吧。


这个案例主要是熟悉按钮操作,以及切换图片

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>作业二</title>
	</head>
	<body>
		<Button id="preBtn"> 上一张</Button>
		<img src="E:\js基础学习\image\1.jpg" id="img">
		<Button id="nextBtn">下一张</Button>
	
		<script>
			var preBtn = document.getElementById("preBtn");
			var nextBtn = document.getElementById("nextBtn");
			var image = document.getElementById("img");
			//任务把imageSrc切分 得到最后一个串,然后拼接
			
			//console.log(image);
			var idx = 1;		//弄一个信号量
			image.style.width = '200px';
			image.style.high = '200px';
			preBtn.onclick = function() {
				//先判断
				if(idx <= 0) {
					idx--;
				} else {
					idx = 3;
				}
			
				//后验收  -- 比较好
				idx--;
				if (idx <= 0){
					idx = 3;
				}
				image.src = 'E:/js基础学习/image/' + idx + '.jpg';
				
			};
			
			nextBtn.onclick = function() {
				idx++;
				if (idx > 3){
					idx = 1;
				}
				image.src = 'E:/js基础学习/image/' + idx + '.jpg'; 
			};
		</script>
	
	</body>
</html>

案例2

js操作元素

<!DOCTYPE html>
<html lang='en'>
	<head>
		<meta charset='UTF-8'>
		<style>
			p{
				font-size : 50px;
			}
			.disable{
				background : red;
			}
			.able {
				background : #ddd;
			}
		</style>
	</head>
	
	<body>
		<Button id='bigBtn'>放大</Button>
		<Button id='smallBtn'>缩小</Button><br>
		<p id='text'>aaaaaaaaaaaa</p>
		
		<script>
			var bigBtn = document.getElementById('bigBtn');
			var smallBtn = document.getElementById('smallBtn');
			var text = document.getElementById('text');
			
			var fontSize = 50;
			
			bigBtn.onclick = function() {
				smallBtn.className='able';
				fontSize += 10;
				if(fontSize > 100) {
					fontSize = 100;
				//方法一设置按钮背景
				//bigBtn.style.background = 'red';
					bigBtn.className = 'disable';
				}
			//	text.font-size = fontSize + 'px';
				text.style.fontSize = fontSize + 'px';
			}
			
			smallBtn.onclick = function() {
				//放大按钮能用
				bigBtn.className='able';
				fontSize -= 10;
				if(fontSize < 10) {
					fontSize = 10;
					smallBtn.className = 'disable';
				}
			//	text.font-size = fontSize + 'px';
				text.style.fontSize = fontSize + 'px';
			}
			
		</script>
	</body>
</html>

案例3

通过获取文本框值,调节页面背景RGB

<!DOCTYPE html>
<html lang='en'>
	<head>
		<meta charset='UTF-8'>
		<style>
			lable{
				font-size : 20px;
			}
			body{
				background: rgb(10,111,111);
			}
		</style>
	</head>
	
	<body id='body'>
		<label>R
			<Button id='dBtn1'>-</Button>
			<input id='ipt1' value='10' type='text'/>
			<Button id='aBtn1'>+</Button>
		</label><br>
		
		<label>G
			<Button id='dBtn2'>-</Button>
			<input id='ipt2' value='111' />
			<Button id='aBtn2'>+</Button>
		</label><br>
		
		<label>B
			<Button id='dBtn3'>-</Button>
			<input id='ipt3' value='111' />
			<Button id='aBtn3'>+</Button>
		</label><br>
		
		<Button id='go'>GO</Button>
		
		<script>
			var dBtn1 = document.getElementById('dBtn1');
			var dBtn2 = document.getElementById('dBtn2');
			var dBtn3 = document.getElementById('dBtn3');
			var ipt1 = document.getElementById('ipt1');
			var ipt2 = document.getElementById('ipt2');
			var ipt3 = document.getElementById('ipt3');
			var aBtn1 = document.getElementById('aBtn1');
			var aBtn2 = document.getElementById('aBtn2');
			var aBtn3 = document.getElementById('aBtn3');
			
			var body = document.getElementById('body');
			
			var rvalue = ipt1.value;
			var gvalue = ipt2.value;
			var bvalue = ipt3.value;
			var go = document.getElementById('go');
			go.onclick = function() {
				rvalue = ipt1.value;
				gvalue = ipt2.value;
				bvalue = ipt3.value;
				changeColor();
			}
			
			dBtn1.onclick = function() {
				rvalue--;
				changeColor();
				
			}
			aBtn1.onclick = function() {
				rvalue++;
				changeColor();
			}
			
			dBtn2.onclick = function() {
				gvalue--;
				changeColor();
				
			}
			aBtn2.onclick = function() {
				gvalue++;
				changeColor();
			}
			
			dBtn3.onclick = function() {
				bvalue--;
				changeColor();
				
			}
			aBtn3.onclick = function() {
				bvalue++;
				changeColor();
			}
			
			function changeColor(){

				if(rvalue < 0) rvalue = 0;
				if(gvalue < 0) gvalue = 0;
				if(bvalue < 0) bvalue = 0;
				
				if(rvalue > 255) rvalue = 255;
				if(gvalue > 255) gvalue = 255;
				if(bvalue > 255) bvalue = 255;
				ipt1.value = rvalue;
				ipt2.value = gvalue;
				ipt3.value = bvalue;
				body.style.background='rgb(' + rvalue +','+gvalue+','+bvalue+')';
			}
		</script>
		
	</body>
</html>

案例4

这个案例主要是用用来体会js基于面向对象编程的效果.实现的效果是使用定时器每隔1s中new出一个对象

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<style>
			div{
				width : 108px;
				height : 116px;	
				position : absolute;
				background : url('E:/js基础学习/image/timg.jpg');
				background-position : 0px -232px;
			}
		</style>
	</head>
	
	<body>
	
		<script>
			function Human(left, top){
				this.left = left;
				this.top = top;
				//创建方法--初始化对象
				this.init = function() {
					this.dom = document.createElement('div');
					//拼接到body
					document.body.appendChild(this.dom);
					this.dom.style.top = this.top + 'px';
					this.dom.style.left = this.left + 'px';
				}
				
				//移动方法
				this.move = function() {
					var idx = 0;
					var self = this;
					//由于在setInterval()中this指的是当前窗口,故用
					//self接收一下
					this.timer = setInterval(function() {
						idx++;
						self.left += 20;
						console.log(self.left);
						if(idx > 4) idx = 0;
						if(self.left >= 1000) {
							self.die();
						}		
						self.dom.style.left = self.left + 'px';
						self.dom.style.backgroundPosition =  -108*idx + 'px -232px';
					}, 200);
					
				}
				//销毁对象
				this.die= function() {
					document.body.removeChild(this.dom);
					clearInterval(this.timer);
				}
			
				this.init();
				this.move();
			}
			
			setInterval(function() {
				new Human(200, parseInt(Math.random() * 500));
			}, 1000)
		</script>
	</body>
</html>

做个简单的回顾

代码主要包括5个部分:(1)js中闭包问题(2)复习一下js中的数组 (3)js中的字符串处理方法(4)字符串转数组 (5)IIFE及时调用的写法

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <script>

        //1. 闭包问题
   /*     function outer() {
            var a = 10
            function inner() {
                console.log(a)
            }
            return inner;
        }
        // 可以在外部访问函数内部局部变量,局部函数
        var inn = outer()
        inn()

*/
        // 2. 数组
        // 一组数据的有序集合,可以放任何类型,一般存放同一类型
        // length : 数组长度
        var arr = [1, 2, 3]  //object
        // 通过arr.length 修改长度
        arr.length = 10
        // arr里面什么都可以方法
        arr = ['123', true, undefined, function () {

        }]
        // 数组的遍历
        // 数组常用头尾操作
        // pop() push() shift() unshift()
        var arr = ['d', 'x', 'n', 'b']
        // push 在数组尾部插入元素 返回值是数组长度
        // var a = arr.push('xxx')
        // 从尾部删除 返回的是删除的元素
        // var a = arr.pop()
        // 从头部删除 返回的是头部元素 
        // var a = arr.shift();
        // 从头部插入 返回的是插入元素后数组的长度
        // var a = arr.unshift('mmm','qqqq')

        // 拼接数组 concat 要用一个新数组接收

        var arr = [1, 2, 3, 4]
        //slice(start, end)返回新数组 包括开始位置不包括终点
        // var newArr = arr.slice(1,3)
        // 2-arr.length-1 
        // slice(-3,-1) 从后截取
        // var newArr = arr.slice(3)


        // splice(start, num)
        // arr.splice(-3,2) 对原始数组操作
        // arr.splice(2,2,'hh','ee') 替换

        // arr.sort()排序
        // var arr = [12,123,1,21]
        // arr.sort(function(a,b){
        //     return a-b
        // })

        // var str = arr.join('')
        // console.log(str)

        // 3.字符串处理
        /*      length: 长度
                charAt()  : 返回下标为n的字符
                indexOf() : 查找字符首次出现位置
                lastIndexOf()
                slice(start, end)
                split() 转数组
                subString()
                subStr()
        
                var str = '字符串处理学习  你好字符串  hhh'
                console.log(str.length)
                console.log(str.charAt(5))
                var newStr = str.concat('好好学习')
                console.log(newStr)
        
                // slice()  截取字符串
                // str.split(' ') //拆分字符串变成数组
                // subStr() 从开始位置 长度
                // str.substring(0, 5);
        */

        //4 数组转字符串
        // 首字母替换成大写
        var str = 'this is a pen'
        // 切割字符串,转换成数组
        var arr = str.split(' ')
        for (var i = 0; i < arr.length; i++) {
            // 把小写转大写
            arr[i] = arr[i].charAt(0).toUpperCase() +
                arr[i].slice(1)
        }
        // 拼成字符串
        var newStr = arr.join(' ')
        console.log(newStr)

 // 5.IIFE及时调用函数表达式
            // 使用+ 、 - 把函数降级
            + function hehe() {
                console.log('hehhe')
            }()
                // 方法2 iife已经把降级成函数表达式 编程了匿名函数
                // 不能直接调用(function ...)()
                // (function hh() {

                // })()
        // 数组观察闭包
        var arr = []
        for (var i = 0; i < 10; i++) {
            arr[i] = function () {
                console.log(i)
            }
        }
        // 这里打印的都是10,因为在数组中只是函数的定义
        // 只是声明了i
        arr[0]()
        arr[1]()


        //解决办法
        var arr = []
        for (var i = 0; i < 10; i++) {

            (
                function hh(i) {
                    arr[i] = function () {
                        console.log(i)
                    }
                }
            )(i)
        }
        // 这里打印的都是10,因为在数组中只是函数的定义
        // 只是声明了i
        arr[0]()
        arr[1]()
    </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值