JavaScript学习笔记--持续随缘更新

目录

了解js特性&事件使用

数据类型&操作符


了解js特性&事件使用

20200316

1、JavaScript简介

历史:
    第一个浏览器 就是文本和图片

网景公司 增强用户的使用体验 急需一门语言 实现用户和网页之间的交互
诞生:为了实现用户和网页的交互而出现

1、开发一门新语言
2、使用已经成熟的语言(java<sun> python c ------)

​    这个时候使用的是java ----- 笨重

​    95年的时候 布兰登.艾奇   网景公司   看书喝茶

​    javascript 布兰登.艾奇 10天
​    布兰登.艾奇 :我不喜欢这们语言 因为我感觉他像是各个语言的一个综合体

​    javascript 完善?
​    es1 es5和es6 es10

2、JavaScript特点、功能

javascript 核心组成:
​        1、ECMAscript  核心语法  规定这门语言怎么写或者说怎么用  
​        2、DOM   document   object   model   文档模型  ----  标签
​        3、BOM   browser  object   model     浏览器模型  ---  浏览器

javascript特点:
        1、解释性的脚本语言 ------ 浏览器可以直接读写  
        2、基于事件的   --  必须是事件触发 才能运行某一个效果
        3、基于对象的  --  万物皆对象 面向对象编程  es5里面没有对象这一个说法 只有类对象  在es6里面才有对象的概念
        4、跨平台的 --- 是否有浏览器有关系 
        5、弱类型语言  --  定义变量的关键字是唯一的 使用的是var 

和编译语言之间的区别:

- ​	java --> 编译器 -->0101010 --> 效果
- ​	JavaScript  --> 浏览器(javascript引擎)
- ​	Java和JavaScript之间关系 --> 没有关系

3、JavaScript引入方式

行内:
	不需要在开始标签写入javascript 这个关键词      和内部样式是有区别的
	onclick:是点击事件  只有点击了才能执行  不点击就不会执行
	alert(1):是js自带的弹出框,带有一个确定按钮  只是用来测试使用 不能用于实际的开发
	和超连接里面的#号不一样  #属于空链接  alert属于事件弹出框
	alert():可以放置任何内容,一般用来测试 如果是中文或者英文 要使用引号引起来,数字或者变量 不需要使用引号

内部:
	在使用内部js的时候,要使用script双标签,所有的js代码都要放在这个script双标签之间
	script双标签在页面的位置,可以放在任何位置,但是,只建议放在head和body的结束标签之前,紧紧挨着head和body的结束标签。

外部:
	注意扩展名 是.js
	外部js的引入 要使用script双标签  并使用src属性  引入外部js的路径
	href和src的区别:都是指的路径  一个是外部样式的路径 一个是外部js的路径  
	script双标签在页面的位置,可以放在任何位置,但是,只建议放在head和body的结束标签之前,紧紧挨着head和body的结束标签

伪协议:
    <a href = 'javascript:;'></a>

注意:在使用外部js 的时候,不需要在外部js里面在写入script 双标签

3.1、三种引入方式优先使用哪个?

    优先使用外部 (页面和js的开发可以分离,提高开发效率)

    对于一些简单的小效果 可以使用内部      尽量不要使用行内 

3.2、js如何注释

被注释掉的代码是不执行的
在开发中,没有删除代码着一种说法,只有注释代码
单行注释   //  
多行注释    /*注释的代码*/
快捷键 ctrl+/

4、js鼠标事件

    onclick	        点击事件
    ondblclick          双击事件
    onmouseover	        鼠标移入元素
    onmouseout	        鼠标离开元素
    onmouseenter	鼠标移入元素
    onmouseleave	鼠标离开元素
    onmousemove		鼠标在元素中移动
    onmousedown		鼠标按下
    onmouseup		鼠标抬起
    oncontextmenu	鼠标右键菜单事件

5、js获取元素

get:获取 /  set:设置
Element:元素  指的是标签名
By:通过
Id:ID名字
document.getElementById('id名字');
测试语句: console.log();把结果在控制台打印出来

	document.getElementById('box').onclick=function(){

  ​            alert(1);

  ​       }

  当使用内部或者外部js的时候,要把功能代码 放在一个函数的代码块里面

getAttribute() 

6、js变量

用来存储值使用的 
使用关键字  var 定义  js里面所有的变量都是使用 var 关键字定义  所谓被称为弱类型语言
因为定义所有的变量只使用 var 关键字 ,所以是弱类型语言
  var num = 10;
    var:    申明变量的关键字
    num:    变量名
    = :     不是等于的意思,是赋值
    10:    变量值
js里面的值的类型 是由等号右面的值决定的


命名规则:
必须以字母、$、下划线(_)开头  后面可以跟任何东西
遵循驼峰命名法   --  当你的变量名 由两个单词或者两个单词以上组成时,从第二个单词开始,首字母要大写
具有语义化
不能使用关键字或者保留字(现在不是关键字,将来会成为关键字的字)


分号:
    告诉浏览器,这一行代码结束了
    最好是带上分号,好习惯

引号:
    单引号和双引号
	单引号和双引号都是成对出现的,不能交叉使用  要嵌套使用
	单引号里面一定要使用双引号  双引号里面一定要使用单引号

7、事件的三部曲

谁发生了事件

发生了什么事件

发生了什么事情

------------------------------------------------------------------------

//1、 btn发生了事件  获取btn

    ​       *var* btn = document.getElementById('btn');

    ​       // 2、发生了什么事件  onclick

    ​       btn.onclick = *function*(){

    ​             // 3、把‘我成功被点击了’打印到控制台

    ​             console.log('我成功被点击了211111');

    ​     }

alert()和console.log():两个测试语句的括号里面,除了变量名和纯数字以为,其他的都要加引号

当js必须写在头部时:
window.onload = function() {

  ​           var btn = document.getElementById('btn');

  ​           console.log(btn);

  ​            btn.onclick = *function* () {

  ​               alert('我是被点击的');

  ​            }

  ​       }

是让你的文档以及资源优先加载,然后在加载js

8、JavaScript操作属性(内容、标签、样式)

操作表单元素:

    表单.value;获取表单内容
    表单.value = '新的值'; 设置表单内容
    
    txt.value = null;

9、操作闭合标签内容

innerHTML  
	标签.innerHTML   获取内容
	标签.innerHTML = '新内容'   设置内容
	innerHTML会覆盖原来的内容

innerText
	获取内容的
	标签.innerText   获取内容
	标签.innerText= '新内容'   设置内容
	innerText会覆盖原来的内容

区别:
    innerHTML是可以识别标签,并正常输出的 但是  innerText是不可以识别标签的,会把标签当作文本正常打印

9-案例

<body>
        <div id="box">春眠不觉晓 处处蚊子咬</div>
<script>
 var box = document.getElementById('box');
	// console.log(box);

	// console.log(box.innerHTML);  //  获取标签内容
	//box.innerHTML = '我是新内容'; // 设置新内容覆盖原内容
	
	// 原来的内容和新的内容全部保留住

	// box.innerHTML = box.innerHTML+'我是新内容';
	// box.innerHTML += '我是新内容233333';    //简写
---------------------------------------------------------------
	// console.log(box.innerText);
	// box.innerText = '123';
	// box.innerText = box.innerText + '789';
	// box.innerText += '789';
	
	// 区别:
	// box.innerHTML = '<h1>我是可以识别标签的</h1>';
	box.innerText = '<h1>我是可以识别标签的</h1>';
</script>
</body>

10、操作元素属性

元素的属性有哪些 ?  
	id class  title  
	原有属性  id class title   自定义属性 : 自己起名字  
	标签.属性名     获取属性
	标签.属性名 = '新属性值'   设置属性
	这种方式对自定义属性是获取不到的 
	class是一个特别的属性
		要想获取class,必须使用className
		但是会覆盖原来的类名

10-案例

    <style>
        .active{
            width: 100px;
            height: 100px;
            background: red;
        }
    </style>

<body>
    <!-- 操作元素属性 -->
    <div id="box" class="div" title="我就是我"></div>

    <script>
        var box = document.getElementById('box');
        // console.log(box);
        // console.log(box.id,box.title);
        // box.id = 'box1';
        // box.title = '我不是我  我也不知道是谁';


        // class的获取设置以及使用

        // console.log(box.class); 无法获取class值
        console.log(box.className);   //使用className获取
        box.className = 'active';
    </script>
</body>

11、操作元素样式

行间样式和非行间样式
js操作的样式,不管是添加样式,还是覆盖样式 或者是修改样式    最终显示的位置都是行间样式
标签.style.样式名 = '样式值';

## 注意:js里面是没有 `-`,当使用样式里面的复合词的时候,要把`-`去掉,然后从第二个单词开始,首字母要大写

cssText
    添加样式的时候,1、保证样式在同一行  2、字符串拼接
    会完全覆盖原来的样式  box.style.cssText += 'width: 100px;height: 100px;border:2px solid blue';

兼容:
    打印值的时候,在`IE`浏览器里面  样式名和样式值 都是大写,并且数无序的
    `IE`浏览器并不会读写cssText,必须在样式前面加 `;`

11-案例

<body>
    <div id="box" style="width: 200px; height: 200px;"> 我是为你</div>

    <script>
        // 获取元素
        var box = document.getElementById('box');
        // console.log(box);
        // 标签.style.样式名 = ‘样式值’;
        box.style.width = '100px';
        box.style.height = '100px';
        //box.style.background = 'blue';  //  英文  十六进制
        // box.style.background-color = 'red'; // 错误的
        box.style.backgroundColor = 'red';  //js中采用驼峰命名,不能使用 - 连接
        box.style.fontSize = '20px';

    </script>
</body>

注:相同属性后写的覆盖之前的,没有的会添加

当你的属性值赋值给一个变量的时候,如果使用这个变量,那么 `.` 的形式就不能使用了
解决方案:我们使用`[]`形式实现属性的获取以及设置
只要是从键盘输入的,都是字符串,也就是用引号引起来
如果直接使用的是属性名 那就用`.`  ,如果属性名 赋值给了一个变量,并且你想使用这个变量来改变属性,那就使用`[]`.

-------------------------------------------

cssText

<body>
    <div id="box"></div>
    <script>
  1、   var box = document.getElementById('box');
        // box.style.cssText = 'width: 100px;'+
        //                     'height: 100px;'+
        //                     'background: pink;';

        // 标准浏览器的
  2、   box.style.cssText = 'width: 100px;height: 100px;background: pink;';

        box.style.cssText += 'width: 100px;height: 100px;border:2px solid blue';

        console.log( box.style.cssText)

        // IE兼容解决:非标准浏览器的 指的是ie 5 6 7 8 
        box.style.cssText += ';width: 100px;height: 100px;border:2px solid blue';
    </script>
</body>
注:cssText 书写折行时需添加''+'' 形式将属性连接 如1
            一行书写时如2

数据类型&操作符

20200317

1、数据类型的分类

1)基本数据类型(用来存储单一数据)
    数值类型        number
    字符串类型      string
    布尔型          true/false
    空值            null  undefined

2)复杂数据类型(可以用来存储多种数据类型)
    对象    object
    函数    function(){}
    数组    Array()

2、typeof操作符

为什么需要知道数据类型?
    为了保证正常的运算,需要使用运算符把数据链接起来,形成表达式
    数据的类型是有值决定

用来确定定义的数据是哪种数据类型
空格  typeof   变量名  我们一般用来判断基本数据类型
括号 typeof (变量名)  我们一般用来判断复杂的数据类型
instanceof运算符    用来确定当前的实列化是不是当前的对象创建的	

2-案例

var d = 10;

console.log(typeof d)    控制台返回number数值型
console.log(typeof(d))    两种写法

3、基本数据类型--Number类型-数值类型

整数和小数
	如果是小数,并且第一位是 0 ,可以省略,并不影响打印
	如果是小数,并且最后一位是 0 ,0会被自动省略

负值
	整数或者小数的负数

进制
	二进制  0101   
	八进制(0-7) 如果超出这个范围 自动转化成十进制 
	十进制 (0-9)
	十六进制(0-9 a-f)以0x开头  x可以大写也可以小写

小数相加
	小数计算的方式是按照  `IEEE 754` 64位方式进行计算的   进度缺失;
	解决方式:扩大100倍 结果缩小100倍

NaN
	当进行一个不正常的运算的时候  会产生NaN
	不是一个数字的数字      类型number  

    作用:只是告诉开发者,你的表达式运算出现了不正常的运算

3-案例

//进度缺失  0.1  0.2特殊
var a = 0.1;
var b = 0.2;
console.log(a + b);//0.30000000000000004

解决:扩大一百倍 
    console.log((0.1*100 + 0.2*100) / 100); //  透明度计算会遇到

var c = 0.2;
var d = 0.3;
console.log(c + d);//0.5


var e = 3;
var f = 'aa';
console.log(e / f); //返回NaN 告知程序员数据运算类型不统一
console.log(typeof(e / f)); //返回 number 类型

4、String类型

定义的
	使用单引号和双引号引起来的 都是字符串
	字符串是可以拼接的

键盘输入的
	键盘输入的一定是字符串

长度
	字符串是有长度的  并且是有下标的
	长度就是字符串的字母个数,所有的下标都是从`0`开始  最后一个下标值是 长度length - 1;
		字符串.length(长度)

读写
	字符串只能读  不能写  而且必须通过下标

下标
	下标从0开始

	console.log(a.charAt(0));

4-案例

var str = 'dyh';
var str1 = 'hnnu';
var nu = 10;
console.log(typeof str,typeof str1,typeof nu); //返回 string string number

console.log(str + str1); //字符串拼接 dyhhnnu

console.log(10 + str); //隐式转化 10dyh

console.log(str[0]); //d 这种方式是从数组演变过了的
console.log(str.charAt(0)); //字符串使用这种方式取

5、Boolean类型

当true和 false参与运算的时候,会根据隐式转换的原则  true 变为 1   false变为 0 
    true     1  真
    false    0  假

console.log(true + false); //返回 1

6、null与undefined

var a = null;
null    空值   是一个空对象,是为了将来存储一个对象,提前在内存分配一块空间,是为对象进入准备的

var b;
undefined    无定义 没有值   定义的变量没有赋值  结果就是undefined

7、复杂数据类型

Object
	关键字创建
	表达式创建

function
	关键字创建
	表达式创建

数组 array
	关键字创建
	表达式创建

7-案例

对象:万物皆对象   属性和方法
    对象:一个名词  
    属性:形容词
    方法:动词

一个人:对象
属性: 外貌  身高 胖瘦
方法:跑步 走路 跳 踢 吃饭 看书

表达式定义一个对象  键值对  有键名和键值
var person = {
    name:'小花',
    age:18,
    height:'300kg',
}
// console.log(person.name);
console.log(person['name']);

使用关键字 new   new 的作用   就是实列化一个对象
内置函数:js定义好的函数 可以直接拿过来用的 就是内置函数   9种  

var person1 = new Object(); //内置函数  
person1.name = '宝贝';
console.log(person1.name);
console.log(person1['name']);


function Num(){ // 自定义构造函数
    
}
var per = new Num();
发布了192 篇原创文章 · 获赞 30 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/JackieDYH/article/details/104906628
今日推荐