JS第一周(数组,操作元素,绑定事件)

输出方式:

   console.log();F12控制台输出
   document.write();页面输出
   alert();页面弹窗输出

变量(可以变化)和常量(一旦创建不能变化)

变量:var 变量名=值;
常量:const 常量名=值;

算数运算符:+ - * / % - 默认具有隐式转换

    算术运算具有隐式转换,默认为转为数字,再运算
		   特殊:+运算,如果碰到了一个字符串,那么两边都会悄悄的转为一个字符串,
		              然后+运算也不再是+运算,变为拼接操作

数据类型:

原始/基本/值类型:String/Number/Boolean/Undefined/Null
引用/对象类型:11个对象 - 你已经见过两个了(Function、Array)
JS里面不是原始类型就是引用类型

数据类型的转换

 一、隐式转换:
  算术运算的隐式转换:默认转为数字,在运算
	   true->1
	   false->0
	   undefined->NaN
	   null->0
特殊:   1、+运算,碰上一个字符串,则两边都会悄悄变成字符串,变为了拼接操作
         2、-*/%,字符串也可以转为数字,前提是纯数字组成的字符串,包含了非数字字符,则为NaN
		         "100"   ==>   100
		         "100px"  ==>  NaN
        3、NaN:Not a Number 不是一个数字,但确实是数字类型,不是一个有效数字
		           a、参与任何算术运算结果仍为NaN
		           b、参与任何比较运算结果都为false - 不能用普通的比较运算判断是不是NaN
			             解决:!isNaN(x);判断x是不是一个数字
			                       true    ==>   有效数字
			                       false   ==>   NaN

二、强制转换:隐式出来的结果不是我们想要的,我们可以手动调用一些方法转换数据类型,再去做运算
	转字符串:var str=x.toString();//x不能null和undefined,null和undefined不能使用.去做任何操作
	页面上一切的数据类型,都是字符串

	转数字:
		var num=parseInt/Float(str);
		执行原理:从左向右,依次读取每个字符,碰到非数字字符,则停止,如果一来就不认识则为NaN,Int不认识小数点,Float认识第一个小数点

		Number(x);//虽然是万能的,任何人都可以转为数字,完全等效于隐式转换,绝对不要手动使用,还不如-0 *1 /1

函数:提前预定义好的,一段可以反复使用的代码段

1、创建:
	function 函数名(形参列表){
		操作
	}

2、调用:
	elem.onclick=function(){
		函数名(实参列表);
	}

分支结构:

1、比较运算符:> < >= <= == !=
	结果都是一个布尔值,正好用于判断条件

2、逻辑运算符:综合比较
	&&:全部条件满足,才满足,只要一个不满足,则不满足 
	||:全部条件不满足,才不满足,只要一个满足,则满足  
	!:颠倒布尔值
3、语法:
	if(条件){操作}
	if(条件){操作}else{默认操作}
	if(条件1){操作1}else if(条件2){操作2}else{默认操作}

循环结构:

var 循环变量=几;
while(循环条件){
	循环体;
	变量的变化
}

for(var 循环变量=几;循环条件;变量的变化){
	循环体;
}

死循环:while(true){}			for(;;){}

退出循环:break;

数组:

创建:var arr=[数据,...];
          var arr=new Array(数据,...);

访问:arr[i];

添加/替换:arr[i]=新值;

length属性:获取到数组的长度:语法:arr.length;
	1、向末尾添加元素:arr[arr.length]=新值;
	2、得到倒数第n个元素:arr[arr.length-n];
	3、删除倒数n个元素:arr.length-=n;

遍历数组:取出数组中的每个元素执行相同 或 相似的操作
	for(var i=0;i<arr.length;i++){
		arr[i];
	}

获取元素:

1、通过 HTML 的特点
	1、ID:不准用,甚至ID根本不需要查找,可以直接使用
	2、标签/class名:var elems=document/parent.getElementsByTag/ClassName("标签/class名");
		特殊:1、找到了是一个集合,集合不能直接做操作,要么下标拿某一个,要么遍历拿每一个
		           2、没找到返回的是一个空集合
		           3、parent - 你已经找到的某个父元素

2、通过 关系:前提:必须先找到一个元素才可以用
	父:elem.parentNode
	子:elem.children - 集合
	第一个儿子:elem.firstElementChild
	最后一个儿子:elem.lastElementChild
	前一个兄弟:elem.previousElementSibling
	后一个兄弟:elem.nextElementSibling

操作元素:

内容:innerHTML(识别标签)/innerText(纯文本)/value(input专属)
	获取:elem.以上三个中的其中一个;
	设置:elem.以上三个中的其中一个="新内容";

属性:
	获取属性值:elem.getAttribute("属性名");
	设置属性值:elem.setAttribute("属性名","属性值");

	简化:
	获取属性值:elem.属性名;
	设置属性值:elem.属性名="属性值";
	小缺陷:
		1、class必须写为className
		2、只能操作标准属性,不能操作自定义属性

样式:内联样式
	获取:elem.style.css属性名;
	设置:elem.style.css属性名="css属性值";
	特殊:css属性名有横线的地方,去掉横线,换为小驼峰命名法

绑定事件:
	单个元素绑定
	elem.onclick=function(){
		this->elem
	}

	多个元素绑定
	for(var i=0;i<elems.length;i++){
		elems[i].onclick=function(){
			this->当前触发事件的元素
		}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值