js数组、循环、this指针以及应用

JavaScript的数组

一、简要说明:

        1.数组变量var arr = [];

        2.数组是数据的仓库,length为数组数据的数量;

        3.表示方法:["第一个数据","第二个数据","第三个数据"];

        4.arr[下标]为数组下标位置的数据(从0开始);

        5.arr.push("第四个数据")向数组最后一位后添加数据;

注意:数组用标签名获取元素:document.getElementsByTagName("");

二、该方法与ById的区别:

        1.ById是静态方法(它的前面必须是document);ByTagName是动态方法(它的前面可以是另一个元素的所有后代元素中获取);

        2.ById获取的只有一个元素(而且id本身在同一个页面中也是唯一的);ByTagName获取的可能是多个(无论是一个和多个都会变成类数组),需要加上[]和数字或者遍历来控制;

        3.ById无法选中动态创建的元素(如通过innerHTML生成的标签),ByTagName可以选中动态创建的元素;


js循环

        当我们需要重复执行某些代码或连续执行的代码有数字在变化时,就可以使用循环:for(;;){}。而且循环也被用做给数组或类数组遍历(既让数组或类数组的每项都执行)。

注意:多个for可以都用变量i,但是循环嵌套要换变量名。


this指针

        1.它是一个object,直接用alert弹出的是window。

        2.Js里当对象是window的时候一般把window省略,实际上alert是window的方法。

        3.再试一下div的点击事件里弹出this则变成了div。

        4.得到的结论是:this就是调用当前方法(函数)的(元素)对象,在全局下就是window。

        5.但是事件调用匿名函数里直接调用时,this又回变成window,这时元素调用的函数实际是匿名函数,而匿名函数内部直接调用的函数依然是window在调用。


应用举例

1.for循环应用举例:用for循环做出一个v字型效果
<style type="text/css">
body{margin:0;}
ul{margin:0; padding:0; list-style:none; position:relative;}
li{width:50px; height:50px; background-color:red; position:absolute;}
</style>
</head>
<body>
<ul id="ul1"></ul>
<script>
var oUl = document.getElementById("ul1");
var str = "";
for(var i=0;i<11;i++){
	str += "<li></li>";
}
oUl.innerHTML = str;
var aLi = oUl.getElementsByTagName("li");
for(var i=0;i<aLi.length;i++){
	if(i<6){
		aLi[i].style.top = i*50+"px";
	}else{
		aLi[i].style.top = (aLi.length-1-i)*50+"px";
	}
	aLi[i].style.left = i*50+"px";
}
</script>
2.用数组实现切换图片效果
<body>
<input type="button" value="上一张"/>
<input type="button" value="下一张"/><br/>
<img src="img/1.png" width="391" height="479"/>
<script>
var arr = ["img/1.png","img/2.png","img/3.png","img/4.png"];
var i=0;
var aBtn = document.getElementsByTagName("input");
var oImg = document.getElementsByTagName("img")[0];
aBtn[0].onclick = function (){
	if(i==0){
		i = 3;
	}else{
		i--;
	}
	oImg.src = arr[i];
}
aBtn[1].onclick = function (){
	if(i==3){
		i = 0;
	}else{
		i++;
	}
	oImg.src = arr[i];
}
</script>
</body>
3.this指针应用举例:
<style type="text/css">
li{font-size:18px; background-color:red; color:#fff;}
</style>
</head>
<body>
<ul>
	<li>li1</li>
    <li>li2</li>
    <li>li3</li>
    <li>li4</li>
    <li>li5</li>
</ul>
<script>
var aLi = document.getElementsByTagName("li");
for(var i=0;i<aLi.length;i++){
	aLi[i].onclick = function (){
		this.style.backgroundColor = "blue";
	};
}
注意错误写法:

for(var i=0;i<aLi.length;i++){
	aLi[i].onclick = function (){  //错误写法
		changeStyle();
	};

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值