JS

1、①引入额外的JS文件

<script src="myscript.js"></script>

②直接在html的 head文件里写:

<script>
   alert(123);
</script>

2、JavaScript中的语句要以分号(;)为结束符。
3、 单行注释   //
       多行注释 /* */

一、JS语法基础:

语句结束之后要写分号;  *****

变量声明:
     1. JavaScript的变量名可以使用_,数字,字母,$组成,不能以数字开头。
     2. 声明变量使用 var 变量名; 的格式来进行声明
注意:
     变量名是区分大小写的。
     推荐使用驼峰命名

二、JS数据类型:

1、数字类型(number)
2、字符串类型
字符串拼接 推荐使用 ‘+’
     字符串自带的那些属性和方法:

var a = 'SuNv is OK!'
a.length :返回长度
a.trim() : 移除空白
a.trimLeft() :移除左边的空白 / a.trimRight() :移除右边的空白
a.charAt(n) : 返回第n个字符
a.concat(b) : 拼接
a.indexOf( 'is',start) : 子序列的位置 ,start 是从哪个位置开始找,返回的还是原序列的位置,如果找不到返回 -1。
a.substring(from,to) : 根据索引获取子序列
a.slice(start,end) : 切片
a.toLowerCase() : 返回小写 / a.toUpperCase() : 返回大写
a.split(' ' , 5) : 分割(分后是数组) 按什么分,分后显示前5个

字符串转数字
parseInt(‘123’) // 返回123
parseInt(“ABC”) // 返回NaN,是代表非数字值的特殊值。该属性用于指示某个值不是数字。
parseFloat(“123.456”) // 返回123.456
3、布尔类型
区别于Python,true和false都是小写。
     var a = true;
     var b = false;
4、数组
数组的内置属性和方法:

var  b = [ 10,12,33,'213','hello']
b.length  : 数组的长度
b.push('world') :  数组尾部追加元素         返回值为  数组长度
b.pop()  :  弹出数组尾部元素                    返回  尾部元素
b.unshift('heh')  :  数组头部插入元素     返回值  数组长度
b.shift() : 头部移除元素                            返回值为  头部元素
b.slice() : 切片(前包后不包)  不支持三个参数(步长)
b.reverse()  :  反转
b.join('+')  :  将数组元素  用 ‘+’ 连接成字符串
b.concat(s)  : 连接数组   (数组 [ ] 或 之前定义的数组 )
字符串也行,但是红色   !!了解!因为 字符串就是红色。
b.sort()  :   排序(坑,应该是所有都按字符串 排序)
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数组的遍历:

var a = [10,20,30];
for(var i = 0;i<a.length;i++){
console.log( i , a[i] )
}

var i = 0;
i++;++i

5、 对象(简单的对象)(没太懂)(类似python 中的字典)
对象的遍历
——————

对象
类似于Python中的字段数据类型
var a = {"name": "Alex", "age": 18};
console.log(a.name);
console.log(a["age"]);
遍历对象中的内容:
var a = {"name": "Alex", "age": 18};
for (var i in a){
  console.log(i, a[i]);
}

6、类型查询:

typeof('abc')    // string
typeof null      // "object"
typeof true     // "boolean"
typeof 123     // "number"
typeof是一个一元运算符(就像++,--,!,- 等一元运算符),不是一个函数,也不是一个语句

7、null和undefined
null –> 表示值为空
undefined –> 表示变量声明了但是没有赋值/函数没有定义返回值默认返回undefined

三、运算符:

算数运算符
+   -  *   /   %   ++    --

比较运算符
    >   >=   <   <=    !=    ==    ===    !==
注意:
1 == “1”     // true
1 === "1"  // false

逻辑运算符
&&   ||   ! 

赋值运算符
=   +=   -=   *=    /=

三元运算
        条件 ? 值1: 值2  --> 条件是true是值1,false的话就是值2
    Python里面的三元运算:
        值1 if 条件 else 值2

四、条件判断和循环

1、
        if... else ...
        if... else if...else
2switch
         case 值1: 要做的事儿;break;
         case 值2: 要做的事儿;break;
         default: 条件都不满足默认执行的
3for 循环
        ①for (var i=0;条件;i++){
            循环要做的事儿;
            }
        ②for (var i in obj) {
                console.log(i);
            }
4while循环
            while (条件){
                  循环要做的事儿;
            }

五函数��

1、函数的定义
①function 函数名(参数1, 参数2){
函数体;
return 返回值;
}
②匿名函数
python中是 lambda –> lambda 参数: 返回值
JS中
③自执行函数
(function(形参){
  函数体
})(实参);
④ 闭包
类似于Python中
内部函数可以访问外部函数的变量

// 普通函数定义
function f1() {
  console.log("Hello world!");
}

// 带参数的函数
function f2(a, b) {
  console.log(arguments);  // 内置的arguments对象
  console.log(arguments.length);
  console.log(a, b);
}

// 带返回值的函数
function sum(a, b){
  return a + b;
}      //return 的只有一个值,逗号隔开不可以。推荐加号链接
sum(1, 2);  // 调用函数

// 匿名函数方式
var sum = function(a, b){
  return a + b;
}
sum(1, 2);

// 立即执行函数
(function(a, b){
  return a + b;
})(1, 2);

2、Date对象
1. month是0~11
2. day是星期,0~6
3. 获取年份用.getFullYear

练习:
编写代码,将当前日期按“2017-12-27 11:11 星期三”格式输出。

var d = new Date(); 
//getDate()                 获取日
//getDay ()                 获取星期
//getMonth ()               获取月(0-11)
//getFullYear ()            获取完整年份
//getYear ()                获取年
//getHours ()               获取小时
//getMinutes ()             获取分钟
//getSeconds ()             获取秒
//getMilliseconds ()        获取毫秒
//getTime ()                返回累计毫秒数(从1970/1/1午夜)
var d  = new Date();
// console.log(d);     //测试。
function f8(){
    var y = d.getFullYear();     //   注意:是   .getFullYear()
    var m = d.getMonth();
    var da =d.getDate();
    var h = d.getHours();
    var mi = d.getMinutes();
    var day = d.getDay();

    var week = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'];

    if(m){   m = m+1 }

    if (mi < 10){mi = '0'+10}; // 如果是 11:01 就会显示11:1 so需要加'0'

    console.log(y+'-'+m+'-'+da+'  '+h+':'+mi+'  '+week[day]);
}
f8();

作用域3例子

var city1 = 'beijing';
function f4(){
    var city = 'hanghai';
    function inner(){
        var city = 'shenzhen';
        console.log(city);
    }
    inner();
}
f4();  //shenzhen


var city2 = 'beijing';
function f5(){
    console.log(city2);
}
function f51(){
    var city2 = 'shanghai';
    return f5;
}
var f = f51();
f();    //beijing


var city3 = 'beijing';
function f6(){
    var city3 = 'shanghai';
    function inner(){
        console.log(city3);
    }
    return inner;
}
var f = f6();
f();   //shanghai

3. JSON序列化 ��
python中:

1. import json
2. 序列化(把对象转换成字符串) --> json.dumps(obj)
3. 反序列化(把字符串转换回对象) --> json.loads(str)

JS中:

1. 序列化(把对象转换成字符串) --> JSON.stringify(obj)
2. 反序列化(把字符串转换回对象) --> json.parse(str)

序列化:
var o = {'silisili':1213};
var s = JSON.stringify(o);
console.log(o,s);//{silisili: 1213} {"silisili":1213}"
console.log(typeof(o),typeof(s));//object string

反序列化:
var p = JSON.parse(s);
console.log(p,typeof(p));
//{silisili: 1213}  "object"     //引号啥意思。*没啥意思
                            4. 正则表达式
1. Python里面:
    1. import re
    2. p1 = re.compile("^[a-zA-Z][a-zA-Z0-9_]{5,11}$")
    3. p1.match()
    4. p1.search()
    5. p1.findall()
    匹配模式:
    忽略大小写 re.I
    贪婪模式 (课下自己在回头复习一下)
2. JS
两种方式:
    1. RegExp对象方式
      ①. var p = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$", "g")
      ②. 2. p.test(str)
    2. 简写方式
        正则表达式/匹配模式
!!! RegExp(正则) 求学要严谨

    1. 正则表达式不能加空格
    2. 当你设置了全局的g标志位,需要注意lastIndex  --> 每一次匹配上之后会把lastIndex设置为下一位索引值
    3. undefined他帮你转成"undefined"来做正则校验

RegExp对象

//RegExp对象

//创建正则对象方式1
// 参数1 正则表达式
// 参数2 验证模式:g(global)和i(忽略大小写)

// 用户名只能是英文字母、数字和_,并且首字母必须是英文字母。长度最短不能少于6位 最长不能超过12位。

// 创建RegExp对象方式
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$", "g");

// 匹配响应的字符串
var s1 = "bc123";

//RegExp对象的test方法,测试一个字符串是否符合对应的正则规则,返回值是true或false。
reg1.test(s1);  // true

// 创建方式2
// /填写正则表达式/匹配模式
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5,11}$/g;

reg2.test(s1);  // true



// String对象与正则结合的4个方法
var s2 = "hello world";

s2.match(/o/g);         // ["o", "o"]             查找字符串中 符合正则 的内容
s2.search(/h/g);        // 0                      查找字符串中符合正则表达式的内容位置
s2.split(/o/g);         // ["hell", " w", "rld"]  按照正则表达式对字符串进行切割
s2.replace(/o/g, "s");  // "hells wsrld"          对字符串按照正则进行替换

RegExp

5、Math对象
Python里面:
  直接使用max\min
JS里面:
  通过Math对象来做数学相关操作的
     Math.min()
     Math.max()
     Math.floor()

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

Math

一、BOM

window

location.href = "https://www.sogo.com"
location.reload()  // 重新加载当前页
location.href

二、DOM

document

1、文档结构
文档节点(document对象):代表整个文档
元素节点(element 对象):代表一个元素(标签)
文本节点(text对象):代表元素(标签)中的文本
属性节点(attribute对象):代表一个属性,元素(标签)才有属性
注释是注释节点(comment对象)
2、寻找节点
CSS选择器
    基本选择器
    标签选择器  --> 标签名
    id选择器    --> #id值
    class选择器 --> .class名
    * 选择器    --> *

JS找标签
  ①基本查找
    标签名查找:document.getElementsByTagName
    ID查找:    document.getElementByID
    class名查找: document.getElementsByClassName
    属性查找:document.getElementsByName(不常用)
  ②间接查找
    根据标签的层级关系去找
        1. parentElement 父节点标签元素
        2. children  所有子标签
        3. firstElementChild  第一个子标签元素
        4. lastElementChild  最后一个子标签元素
        5. nextElementSibling  下一个兄弟标签元素
        6. previousElementSibling  上一个兄弟标签元素
3、创建标签
1. doucument.creatElement("div")  --> 要创建什么标签括号里面就写什么
2. 设置标签内容
    1. eleObj.innerHTML = "<p>P标签</p>"
    2. eleObj.innerText = "标签中间的文本"

3. 标签属性
    1. input标签相关
        1. inputEle.value  --> 获取input框的输入值
        2. inputEle.value = "请输入xxx" --> 设置input框的值
    2. checkbox标签相关
        1. checkboxEle.checked --> 返回true或false
        2. checkboxEle.checked = true  --> 选中该checkbox
    3. select标签相关
        1. selectObj.options  --> 获取所有的option选项 (数组)
        2. selecObj.selectedIndex  --> 获取选中的option的索引值
        3. selecObj.options.length=0 --> 快速清空option             
4、修改标签属性或样式
1. 修改文本信息
    ele.innerText    获取文本节点的内容(包括子标签的文本)
    ele.innerText="字符串"      修改标签的文本信息
2. 文档内容(HTML内容)
    ele.innerHTML          获取文档内容
    ele.innerHTML=“<h1>好</h1>” 赋值HTML内容
3. 修改样式
    1. classList
    ele.className    获取所有的class类名(字符串类型)
    ele.classList     获取所有的class类名
    ele.classList.contains(cls) 判断有没有某个class        
    ele.classList.add(cls)      添加一个class类名
    ele.classList.remove(cls)   删除class类名
    ele.classList.toggle(cls)   切换(有就删除,没有就添加)
2. ele.style.样式=""
    注意:有中横线的CSS样式要转成驼峰形式        
    ele.style.backgroundColor="red"
4. 属性
    ele.attributes  获取所有的属性信息
i、事件

常用事件:

onclick()
ondbclick()
onfocus()
onblur()
onchange()事件 --> select联动的例子 
    1. selectEle.selectedIndex       --> 获取当前选中的option的索引值
    2. selectEle.options             --> 获取所有的option选项     
    3. selectEle.options.length=0    --> 清空所有的option选项

键盘事件 –> jQuery讲个示例

绑定事件的方式: *

1. 在标签里面直接写on动作=func();
    比如:<div onclick=('f()')>点我</div>
2. 通过JS代码绑定事件 ele.onclick=function(){alert(123);}
3. 基于已经存在的父标签来给子标签绑定事件,  --> 事件委托的方式
<ul>li*100</ul>
ulEle.onclick= function(){
    event.target     --> 点击的那个对象
    alert(event.target.innerText)
}
ii、文档标签的创建
    引申出来的:
script标签一般写在body标签的最下面,除非是文档加载之前就要运行的代码要放在head标签里 *****

iii.补充经验:
    1. 项目不要一开始就规划十分完美,要从最基本的功能开始写起,然后逐渐丰富
    2. 与同事沟通以正式邮件为主
    3. 项目时间要给自己留有富余
    4. CDN是什么?


人质 – 伦桑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值