Loading

JavaScript

引入方式、注释

  1. 行内样式

    <p id="" class="" style="" onclick="console.log(2);">text</p>
    
  2. 内嵌式

    <script type="text/javascript">
        // js代码
    </script>
    
  3. 外接式

    <script type="text/javascript" src="js/index.js"></script>
    

注释

//单行注释
/*多
行
注
释*/
console.log('hello world');	//打印输出语句
alert('hello world');//弹出框输出
console.log(window);
var name = prompt('请输入今天的天气?'); // 输入语句
console.log(name);

运算符

  1. ++i,i++

    var a = 4;
    // 先把a的值赋值给c,再a++
    var c = a ++;
    console.log(c);   // 4
    console.log(a);   // 5
    // 先++a,再赋值给c
    var c = ++a;
    console.log(c);   // 5
    console.log(a);   // 5
    
  2. =====

    var a = 2;
    var b = '2';
    console.log(a == b);      // 比较的是值,为true
    console.log(a === b);     // 比较是值和数据类型,为false
    
  3. 逻辑运算符

    • && 与
    • || 或
    • ! 非
  4. 三元运算符

    (codition) ? run this code : run this code instead;
    var isResult  =  1 > 2 '真的' : '假的' ;
    

流程控制

条件判断

if(条件){
    do something
}else{
    do something
}
switch (expression) {
  case choice1:
    run this code
    break;
  case choice2:
    run this code instead
    break;
  default:
    actually, just run this code
}

循环语句

for(初始化条件;结束条件;递增条件){
    //run this code
}
  • break终止循环
  • continue 终止本次循环
var total = 0;
var i;
for(i = 1;i <= 10000; i++){
    total = total+ i;
}
console.log(total);//50005000

while循环

var i = 0;
while (i < 10) {
  console.log(i);
  i++;
}

三元运算符

var a = 1;
var b = 2;
var c = a > b ? a : b //如果a>b这个条件成立,就把冒号前面的值给c,否则把冒号后面的值给c

变量

声明变量使用关键字var语法如下

var 变量名;
var x,y;//可以一次多个
var x = 5;//声明变量x并将5赋值给x

变量名可以任意取名,但要遵循命名规则

  1. 变量必须使用字母、下划线(_)或者美元符($)开始。
  2. 可以使用任意多个英文字母、数字、下划线()或者美元符($)组成。
  3. 不能使用Javascript关键字和Javascript保留字来进行命名
  4. 变量名严格区别大小写,如A何a是两个不同的变量

关于用不用var声明变量的区别

全局上下文中

  • 带var的变量是 声明一个全局变量,不能被delete删除
  • 不带var的变量是 创建一个全局对象(window)的属性,可以用delete关键字删除

函数上下文中

  • 带var的变量是 声明一个私有变量
  • 不带var的变量,处理机制是
    • 沿作用域链向上查找该变量,是哪个上下文中声明的变量,就改变哪个上下文中的变量
    • 如果所有上下文中都没有该变量,则给全局对象 window,添加一个同名属性

基本数据类型

Number(数值)

String(字符串)

Boolean(布尔值)

undefined(未定义)

null(空对象)

Number(数值)

Javascript不区分整数和浮点数,统一用Number表示。

NaN(不是数字),Infinity(无限大),isNaN:判断是否是NaN

var a = 2;      // 整型
var b = '2';    // 字符串
var c = true;   // 布尔
var d;          // 未定义的
var e = null;   // 空对象

// 先声明后定义
var f;
console.log(f);   // 值  是undefined
console.log(typeof f);  // 类型  是undefined

parseInt("123")  // 返回123
parseInt("ABC")  // 返回NaN,NaN属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。
parseFloat("123.456")  // 返回123.456

var str = '1122.78fe'
console.log(parseInt(str));  //可以识别 1122
console.log(parseFloat(str));  //可以识别 1122.78
console.log(Number(str));   // 结果 NaN 无法识别

String(字符串)

  1. length 属性:查看字符串的长度

    var a = 'hello';
    a.length;  // 5
    
  2. trim() : 移除两边空白

    var a = '  hello  ';
    a.trim();   // "hello"
    
    • trimLeft() 去除左边空白
    • trimRight() 去除右边空白
  3. charAt(n) : 从0开始返回索引为n的那个字符

    var a='hello';
    a.charAt(2);  //  e
    
  4. concat() : 字符串的拼接

    var a = 'hello';
    var b = 'world';
    a.concat(b)  //"helloworld"
    
  5. indexOf() : 通过元素找索引

    var a='interesting';
    a.indexOf('t');  // 2 : 只找到第一个就不再继续找
    
    start参数 : 索引的起始位置
    var a='interesting';
    a.indexOf('n',2);  // 从第二个位置往后找,得到结果是 : 9
    
    如果找不到就返回 -1:
    a.indexOf('t',8);  // 第八个位置之后没有t元素了,得到结果 : -1
    
  6. slice() : 切片(前取后不取)

    var a='happy';
    a.slice(1,-1);  // app
    a.slice(1,4);   // app
    
  7. toLowerCase() 全部变小写 , toUpperCase() 全部变大写

    var a='happy';
    a.toUpperCase();  // HAPPY
    
  8. split() : 字符串分割,第二个参数是返回多少个数据

    var a='happy';
    a.split('a');  // ["h", "ppy"]
    a.split('a',1);  // ["h"] :返回一个数
    

Boolean(布尔值)

在JS里面布尔值首字母为小写
var a=true;
var b=flase;

""(空字符串)、0、null、undefined、NaN都是false。

null和undefined

  • null表示值是空,一般在需要指定或清空一个变量时才会使用,如:name=null;
  • undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined,还有就是函数无明确的返回值时,返回的也是undefined
  • null表示变量的值是空,undefined则表示只声明了变量,但还没有赋值

引用数据类型

数组:Array

var arr = ['张三','李四'];   //数组

数组常用方法和属性

  1. 索引取值

    var a = [123, "ABC"]; 
    console.log(a[1]);  // 输出"ABC"
    
  2. length属性 :

    var a = [123, "ABC"]; 
    a.length;  // 2
    
  3. push() : 尾部追加 pop() : 尾部删除

    var a = [11,22,33]
    a.push('123');   // [11, 22, 33, "123"]
    a.pop();  //"123"
    a  --  [11, 22, 33]  
    
  4. unshift() : 头部追加 shift() : 头部删除

    var a = [11,22,33]
    a   // [11, 22, 33]
    a.unshift('aa');
    a   // ["aa", 11, 22, 33]
    
    a.shift();  // "aa"
    a   // [11, 22, 33]
    
  5. sort() : 排序

    var a = [11,4,84,73];
    
    a.sort();  // [11, 4, 73, 84] 首字符会按照ASCII的大小排序
    
  6. splice() : 删除元素

    var a=[11,22,33,44];
    a.splice(1,2,'aa','bb'); // 从索引为1的位置往后删两个,并将内容替换
    a;  // 得到结果 : [11, "aa", "bb", 44]
    // 参数: 1.根据索引从哪删,2.删几个,3.删除位置替换的新元素(可多个元素)
    
  7. reverse() : 在原数组上的反转

    var a=[11,22,33,44];
    a.reverse();  // [44, 33, 22, 11]
    
  8. join() : 将数组元素连接成字符串

    var a=['aa','bb'];
    a.join('+');  // 'aa+bb' 通过+号将数组里面的元素拼接
    
  9. concat() : 连接组合并,得到一个新数组,原数组不变(类似于python列表的extend)

    var a=["aa", "bb"]
    var b=[11,22];
    a.concat(b);  // ["aa", "bb", 11, 22]
    

对象:Object

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象。
JavaScript 提供多个内建对象,比如 Number、String、Date、Array 等等,通过new实例化的对象都是object类型(var s = new String('hello'),var n = new Number(12)等),数组不需要new声明,类型就是object类型。
对象只是带有属性和方法的特殊数据类型。

// 定义在对象中的函数,叫做对象的方法
var obj = {
    name:'yhp',
    age:19,
    fav:function () {
        console.log(this);
    }
};
obj.fav();

函数:function

// js中,有全局作用域和函数作用域
// 1.普通函数的声明
function add(a,b){
    return a + b  //返回多个值,可以用数组包裹起来 return [a,b]
}
// 2.函数表达式
var add2 = function(){
};
// 3.自执行函数
;(function(){
    alert(1111);
})();

Date对象

var d1 = new Date(); //获取当前时间
console.log(d1.toLocaleString());  //当前时间日期的字符串表示

//方法2:参数为日期字符串
var d2 = new Date("2004/3/20 11:12");
console.log(d2.toLocaleString());
var d3 = new Date("04/03/20 11:12");  // 月/日/年(可以写成04/03/2020)
console.log(d3.toLocaleString());

//方法3:参数为毫秒数,了解一下就行
var d3 = new Date(5000);  
console.log(d3.toLocaleString());
console.log(d3.toUTCString());  
 
//方法4:参数为年月日小时分钟秒毫秒
var d4 = new Date(2004,2,20,11,12,0,300);
console.log(d4.toLocaleString());  //毫秒并不直接显

date对象的其他方法

var d = new Date(); 
d.getDate()                 获取日
d.getDay ()                 获取星期 ,数字表示(0-6),周日数字是0
d.getMonth ()               获取月(0-11,0表示1月,依次类推)
d.getFullYear ()            获取完整年份
d.getHours ()               获取小时
d.getMinutes ()             获取分钟
d.getSeconds ()             获取秒
d.getMilliseconds ()        获取毫秒
d.getTime ()                返回累计毫秒数(从1970/1/1午夜),时间戳

JSON

var str1 = '{"name": "yhp", "age": 18}';
var obj1 = {"name": "yhp", "age": 18};
// JSON字符串转换成对象  反序列化
var obj = JSON.parse(str1); 
// 对象转换成JSON字符串  序列化
var str = JSON.stringify(obj1);

Math计算模块

Math.abs(x)      	返回数的绝对值。
Math.exp(x)          返回 e 的指数。
Math.floor(x)    	小数部分进行直接舍去。
Math.log(x)      	返回数的自然对数(底为e)。
Math.max(x,y)    	返回 x 和 y 中的最高值。
Math.min(x,y)    	返回 x 和 y 中的最低值。
Math.pow(x,y)    	返回 x 的 y 次幂。
Math.random()    	返回 0 ~ 1 之间的随机数。
Math.round(x)    	把数四舍五入为最接近的整数。
Math.sin(x)      	返回数的正弦。
Math.sqrt(x)     	返回数的平方根。
Math.tan(x)      	返回角的正切。

BOM

Browser Object Model,浏览器对象模型,能使JS有能力和浏览器进行交互

1.系统对话框方法

  • alert()
  • confirm()
  • prompt()

2.location

window对象的子对象

location.href;   // 获取当前的URL
location.href="URL" // 跳转到指定页面
	示例:location.href = 'http://www.baidu.com';直接跳转到百度
location.reload();  // 重新加载页面,就是刷新一下页面

3.定时器

计时器是异步的

setTimeout

一次性任务

var t=setTimeout("JS语句",毫秒)  第一个参数js语句多数是写一个函数,不然一般的js语句到这里就直接执行了,
先用函数封装一下,返回值t其实就是一个id值(浏览器给你自动分配的)
  • setTimeout() 方法会返回某个值。在上面的语句中,值被储存在名为 t 的变量中。假如你希望取消这个 setTimeout(),你可以使用这个变量名来指定它。

  • setTimeout() 的第一个参数是含有 JavaScript 语句的字符串。这个语句可能诸如 "alert('5 seconds!')",或者对函数的调用,诸如 alertMsg()"。

  • 第二个参数指示从当前起多少毫秒后执行第一个参数(1000 毫秒等于一秒)。

    setTimeout('confirm("你好");',3000);  // 3秒之后执行前面的js代码
    setTimeout(confirm('xxx'),3000);  // 如果写的不是字符串,会直接执行
    setTimeout(function(){confirm('xxx')},3000);  // 最好写成函数
    
    var a = setTimeout(function(){console.log('xxx')},3000);  // a是浏览器来记录计时器的一个随机数字
    clearTimeout(a)    // 清除计时器,通过这个数字可以清除
    

setInterval

周期性任务

  • setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。
  • setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。
var a = setInterval(function(){console.log('xxx')},3000);  
clearInterval(a);

DOM

文档对象模型

  • HTML DOM 模型被构造为对象的树。

  • 是一套对文档的内容进行抽象和概念化的方法。

  • DOM标准规定HTML文档中的每个成分都是一个节点(node):

    • 文档节点(document对象):代表整个文档
    • 元素节点(element 对象):代表一个元素(标签)
    • 文本节点(text对象):代表元素(标签)中的文本
    • 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
    • 注释是注释节点(comment对象) 
  • JavaScript 可以通过DOM创建动态的 HTML:

    • JavaScript 能够改变页面中的所有 HTML 元素 / HTML 属性 / CSS 样式

标签查找

直接查找

  • document.getElementById(id值); 根据ID获取一个标签

  • document.getElementsByClassName(类值); 根据class属性获取(可以获取多个元素,所以返回的是一个数组)

  • document.getElementsByTagName(标签名); 根据标签名获取标签合集(得到的是数组,可以通过索引拿到值)

间接查找

var a = document.getElementById('d1');
a.parentElement;            获取a这个标签的父级标签
a.children;                 所有子标签 得到的一个数组,可以通过索引取值
a.firstElementChild;        第一个子标签元素
a.lastElementChild;         最后一个子标签元素
a.nextElementSibling;       下一个兄弟标签元素
a.previousElementSibling;   上一个兄弟标签元素

节点操作

/*创建节点(创建标签) */
	var a = document.createElement('标签名称'); 
	示例创建a标签
		var a = document.createElement('a');
		var dd = document.getElementById('dd');  // 找到div标签
	
/*添加节点*/
	// 添加节点,添加到了最后
	dd.appendChild(a);     // 将创建的a标签添加到dd这个div标签里面的最后.

	// 某个节点前面添加节点
	父级标签.insertBefore(新标签,某个儿子标签)
	示例:
		var dd = document.getElementById('dd');  // 找到父级标签
		var a = document.createElement('a');   // 创建一个新的a标签
		var d2 = dd.children[1];  // 找到父级标签下的某个儿子标签
		dd.insertBefore(a,d2);   // 将a标签插入到上面这个儿子标签的前面.
/*删除节点*/
	dd.removeChild(d2);  父级标签中删除子标签
        
/*替换节点*/
	var dd = document.getElementById('dd');  // 找到父级标签
	var a = document.createElement('a');  // 创建a标签
	a.innerText = '百度';  
	var d1 = dd.children[0];  // 找到要被替换的子标签
	dd.replaceChild(a,d1);  // 替换

文本操作

var divEle = document.getElementById("d1")
divEle.innerText; // 输入这个指令,一执行就能获取该标签和内部所有标签的文本内容
divEle.innerHTML;  // 获取的是该标签内的所有内容,包括文本和标签
d1.innerText; 查看

设置一个文本:
	d1.innerText = "<a href=''>百度</a>";  
	d1.innerHTML = "<a href=''>百度</a>";  能够识别标签

属性操作

var divEle = document.getElementById("d1");
divEle.setAttribute("age","18")  // 比较规范的写法 给某一标签增加属性
divEle.getAttribute("age")     // 查看属性
divEle.removeAttribute("age")  // 删除属性

// 自带的属性还可以直接.属性名来获取和设置,如果是你自定义的属性,是不能通过.来获取属性值的
标签对象.属性;  // 设置属性
标签对象.属性="..."    // 修改属性

获取值操作

适用于用户输入或者选择类型的标签如:input / select / textarea

var inp = document.getElementById('username');
inp.value;              // 查看值
inp.value = 'jjj';   // 设置值

选择框:
	<select name="city" id="city">
        <option value="1">上海</option>
        <option value="2">北京</option>
        <option value="3">深圳</option>
    </select>
	
	var inp = document.getElementById('city');
	inp.value;        // 查看值
	inp.value = '1';  设置值

class的操作

var d = document.getElementById('dd'); 
d.classList;  // 获得这个标签的class属性的所有的值
d.classList.add('xx2');       // 添加class值
d.classList.remove('xx2');    // 删除class值
d.classList.contains('xx2');  // 判断是否有某个class值,有返回true,没有返回false
d.classList.toggle('xx2');    // 有就删除,没有就增加

CSS样式操作

  • 对于没有中横线的CSS属性一般直接使用style.属性名即可

  • 对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可。

    var d = document.getElementById('d');
    d.style.backgroundColor = 'deeppink';  
    d.style.height = '1000px'
    

事件

onclick

当用户点击某个对象时调用的事件句柄。

绑定事件的方式有两种

  • 方式一:

    <div id="d1" onclick="f1();"></div>
    
    <script>  // 可写在body标签里也可写在head标签里
        function f1() {
            var d = document.getElementById('d1');
            d.style.backgroundColor = 'yellow';
        }
    </script>
    
  • 方式二: (常用这种方式)

    <div id="d1"></div>
    <script>  // 只能写在body标签里面
        var a=document.getElementById('d1');
    	a.onclick=function () {
        	a.style.backgroundColor='red';
    }
    </script>
    

常用事件

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。

onfocus        元素获得焦点。               // 练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)

onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。

onselect      在文本框中的文本被选中时发生。
onsubmit      确认按钮被点击,使用的对象是form。
posted @ 2019-06-21 15:55  陌路麒麟  阅读(149)  评论(0编辑  收藏  举报