js -- javascript

ECMAscript5

ECMAscript6 -- vue.js react ..

由三个部分组成

1 ECMAscript5的核心   js语言
2 BOM 浏览器对象模型 js操作浏览器,做出对应的一些效果
3 DOM 文档对象模型 -- HTML文件

js代码引入方式

三种方式
1 head标签的script标签里面(alert('xx'), confirm('xx'))
2 body标签的script标签里面
3 外部文件引入的方式来使用
a 创建一个.js结尾的文件,写上咱们的js代码
比如:alert('are you ok?');
b 在想使用这个js代码的html文件中,head标签或者body标签下面或者上面写下面的内容
<script src="01test.js"></script>

js语言基础

变量

var a = 10;  变量定义 var 变量名;

数据类型

number类型(整数,浮点数)

var n = 11;
var n2 = 11.11;
js代码注释 // js代码 查看数据类型 typeof 变量名;
typeof n; -- number类型 变量声明,但没有赋值的时候,变量的值为undefined

string类型(字符串)

示例:
var a = 'alexsb';
var a = new String('ss'); typeof a; -- "string"
字符串的操作方式
var s = '诱色可餐徐茂洁';
索引取值: s[1] -- '色'
移除两端空格: s.trim(); s.trimLeft(); s.trimRight(); var value = name.charAt(index) // 根据索引获取字符
示例: var s = 'hello'; -- s.charAt(4); -- 'o'
var value = name.substring(start,end) // 根据索引获取子序列,切片
示例: s.substring(1,3); -- "el"

布尔类型(boolean类型)

var a = true;
var b = false;

undefined和null类型

undefined 变量声明了,但是没有赋值,此时这个变量是undefined类型
null : 变量不用了,就可以给变量赋值为null,--- object类型

数组(array)

var name = [11,22,33];

数组常用方法:
names[0] // 索引,索引也是从0开始的 names.push(ele) // 尾部追加元素
示例:a.push('xx'); --  [11, 22, 33, "xx"]
var ele = names.obj.pop() // 尾部移除一个元素
示例:a.pop(); -- [11, 22, 33]
names.unshift(ele) // 头部插入元素
示例:a.unshift('ssss'); --  ["ssss", 11, 22, 33]
var ele = obj.shift() // 头部移除一个元素
示例:a.shift(); --  [11, 22, 33]
names.splice(index,0,ele) // 在指定索引位置插入元素
names.splice(从哪删(索引),删几个(个数),删除位置替换的新元素(可不写,可写多个))
names.splice(index,1,ele) // 指定索引位置替换元素
names.splice(index,1) // 指定位置删除元素
示例: a.splice(1,2) --  [11, 22, 33]
a.splice(1,1,'xx','oo','asdf'); -- [11, "xx", "oo", "asdf", 33] names.slice(start,end) // 切片
示例:a.slice(1,3);--  [22, 33] names.reverse() // 原数组反转
示例:a.reverse(); -- [44, 33, 22, 11]
names.join(sep) // 将数组元素连接起来以构建一个字符串
示例: var a = ['ni','hao','ma',18]
a.join('+'); -- "ni+hao+ma+18"
names.concat(val,..) // 连接数组
示例: var a = [11,22]; var b = ['aa','bb']
var c = a.concat(b); c -- [11, 22, "aa", "bb"]
names.sort() // 对原数组进行排序
很尬!
需要自己定义规则:
function compare(a,b){
return a - b; 当大于0时,两个数据换位置
};
使用: a.sort(compare); 升序排列

自定义对象(dict)

// 声明
info = {
name:'武沛齐',
"age":18
} var a = {username:'xx',password:'123'}; //可以不加引号
typeof info;
"object" // 常用方法
var val = info['name'] // 获取,通过键取值必须加引号,
info.name 也是可以的
info['age'] = 20 // 修改
info['gender'] = 'male' // 新增
delete info['age'] // 删除

html特殊符号

html特殊符号
&nbsp; 空格
&gt; >
&lt; <
list-style: none;和ul标签的type='none'是一样的

流程控制

if判断

if (a == 1){  //判断条件写在小括号里面,大括号里面写条件判断成功后的代码内容
console.log('1111');
}
else{
console.log('222');
}

多条件判断

    var a = 0;
if(a > 1){
// console.log('1111');
// var hhhh = document.getElementById('d1');
// hhhh.innerText = '彭于晏';
}else if(a<1){ console.log('2222');
}else {
console.log('3333');
}

运算符

> < == !=  >=  <=   ===  !==

var a = 2;
var b = '2';
a == b; true 弱等于
a === b; false 强等于
a != b; false
a !== b; true

算术运算

+  -  * / %   ++  --
++ 自增 1
-- 自减 1 var a = 2;
a++ 先执行逻辑 在+1
++a 先+1 在执行逻辑 简单示例:
if (++a === 4){
console.log('xxx');
}
else{
console.log('ooo');
};

switch判断

var num = 200;
switch(num++){
case 10:
console.log('未成年');
break;
case 18:
console.log('成年');
break;
case 35:
console.log('油腻老男人');
break;
case 100:
console.log('....');
break;
default:
console.log('太大了');
};

异常捕获

try{
console.log(xx);
}catch(e){
console.log(e);
}
finally{
console.log('sssss');
}

循环

for循环

for (var i=0;i<100;++i){
console.log(i);
}; 循环数组
var d = [11,22,33];
for (var i in d){
if (d[i] === 22){
continue;
// break;
}
console.log(i,d[i]);
}
for (var i=0;i<d.length;i++){
console.log(i,d[i]);
};
循环自定义对象--python字典
for (var i in d){
console.log(i,d[i]); #不要用d.i来取值
}

while

var a = 0;
while(a<5){
a++;
if (a===2){
continue;
}
console.log(a);
}

js的基础数据类型都有布尔值属性, []--false 0,{},'',undefined,null,NaN

字符串转数字:
var a = '11';
parseInt(a); var a = '23abc';
parseInt(a); 23 var a = 'asdfabc';
parseInt(a); -- NAN -- not a number
typeof NaN; -- "number"
NaN === NaN; -- false
NaN == NaN; -- false

函数

普通函数

function f1(a,b){
return a+b;
}
执行: f1(1,2) -- 3
function f1(a,b){
return a,b;
}; f1(1,2);
不能返回多个值: 2

匿名函数

var a = function (a,b){
console.log('xxx');
} var d = {'xx':'oo','f':function (a,b){
console.log('xxx');
}};
执行:d.f(1,2);

自执行函数

    (function () {
alert('自执行函数!')
})()

序列化

var d = {'a':'aa','b':18};
序列化:
var d_json = JSON.stringify(d); //python json.dumps(d);
反序列化:
d_json = "{"a":"aa","b":18}"
var reverse_json = JSON.parse(d_json);

BOM对象 浏览器对象模型

弹框

alert('xx');
confirm('are you sure?')

location对象

location.href;  获取当前页面的地址
location.href = 'http://www.baidu.com'; 跳转到这个网址上
location.reload(); 刷新当前页面

计时器

第一种:一段时间之后执行某个任务
设置:var t = setTimeout(function(){confirm('你满18岁了吗?')},5000);
var t = setTimeout("console.log('xxx')",1000);
t就是浏览器用来记录你的计时器的标识数字
清除:clearTimeout(t)
第二种:每隔一段时间执行某个任务
设置:var t = setInterval(function(){confirm('弹个框!!')},3000);
清除:clearInterval(7);

DOM对象

HTML文档(.html文件)

直接查找选择器

html代码:
<div class="c1" id="d1"></div>
<div class="c1 c2" id="d2"></div>
css代码:
.c1{
background-color: green;
height: 100px;
width: 100px;
}
.c2{
background-color: red;
/*height: 100px;*/
/*width: 100px;*/
color:red;
} 按标签名查找: var divEle = document.getElementsByTagName('div');
按id值查找: var d1 = document.getElementById('d1');
示例: d1.style.height = '600px';
按类值查找:var a = document.getElementsByClassName('c1');

间接查找选择器

var div1 = document.getElementsByClassName('c1')[0];
div1.nextElementSibling.style.color = 'red'; 找下一个兄弟标签,并改了色
div1.previousElementSibling; 找上一个兄弟
div1.firstElementChild; 找第一个儿子
div1.lastElementChild; 找最后一个儿子
div1.children; 找所有儿子,是一个数组
div1.parentElement; 找到自己的父级标签

文本操作

innerText
获取文本:
var a = document.getElementById('jd')
a.innerText; 只获取文本内容
设置文本:
a.innerText = '<a href="">校花</a>';不能识别标签,单纯的文本内容显示
innerHTML
获取文本
var d = document.getElementsByClassName('c1')[0];
d.innerHTML; 获取的内容包含标签
设置文本:
d2.innerHTML = '<a href="">校花</a>'; 能够识别标签,生成标签效果

value值操作

input标签
html:
<input type="text" name="username" id="username" >
示例:
var inp = document.getElementById('username'); 找到标签
inp.value; 获取值
inp.value = '200块!'; 修改值

js补充

class类值操作

var div1 = document.getElementById('d1');
div1.classList; // 获取标签类值
div1.classList.add('c2'); // 添加类值
div1.classList.remove('c3'); // 删除类值
div1.classList.toggle('c3'); // 有就删除,没有就添加
var t = setInterval("div1.classList.toggle('c3')",1000); //定时器添加

HTML的label标签补充

    <label >用户名:
<input type="text" name="username" id="username">
</label>
<label for="password">密码: </label>
<input type="password" name="password" id="password">

button补充

普通按钮,没有提交效果
<input type="button">
<button type="button">注册</button> 下面两个能够提交form表单数据
<input type="submit" value='登录'>
<button type="submit">注册</button>

js--javascript学习的更多相关文章

  1. JavaScript学习12 JS中定义对象的几种方式

    JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工 ...

  2. JavaScript学习10 JS数据类型、强制类型转换和对象属性

    JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...

  3. JavaScript学习06 JS事件对象

    JavaScript学习06 JS事件对象 事件对象:当事件发生时,浏览器自动建立该对象,并包含该事件的类型.鼠标坐标等. 事件对象的属性:格式:event.属性. 一些说明: event代表事件的状 ...

  4. JavaScript学习03 JS函数

    JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的 ...

  5. 从 prototype.js 深入学习 javascript 的面向对象特性

    从 prototype.js 深入学习 javascript 的面向对象特性 js是一门很强大的语言,灵活,方便. 目前我接触到的语言当中,从语法角度上讲,只有 Ruby 比它更爽. 不过我接触的动态 ...

  6. JavaScript学习——使用JS完成页面定时弹出广告

    1.获取图片的位置(document.getElementById(“”))  隐藏图片:display:none 定时操作:setInterval(“显示图片的函数”,3000); 2.步骤分析 ( ...

  7. Web编程基础--HTML、CSS、JavaScript 学习之课程作业“仿360极速浏览器新标签页”

    Web编程基础--HTML.CSS.JavaScript 学习之课程作业"仿360极速浏览器新标签页" 背景: 作为一个中专网站建设出身,之前总是做静态的HTML+CSS+DIV没 ...

  8. 【干货分享】Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  9. JavaScript学习13 JavaScript中的继承

    JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式 ...

  10. JavaScript学习11 数组排序实例

    JavaScript学习11 数组排序实例 数组声明 关于数组对象的声明,以前说过:http://www.cnblogs.com/mengdd/p/3680649.html 数组声明的一种方式: va ...

随机推荐

  1. 使用十年的电脑在家用记事本调试 .NET 程序

    引言 春节放假回老家,没有把笔记本电脑带上,由于肺炎疫情的原因只能呆在家里,写的一个WinForm程序无法正常使用,需要及时修复,看我如何使用家里十年的台式机来调试修复 .NET 应用程序. WinF ...

  2. mysql必知必会--MySQL简介

    什么是MySQL MySQL已经存在很久了,它在世界范围内得到了广泛的安装和使用. 为什么有那么多的公司和开发人员使用MySQL?以下列出其原因. 成本--MySQL是开放源代码的,一般可以免费使用( ...

  3. 00-django | 02-处理HTTP请求

    00-django | 02-处理HTTP请求 python Django Django 处理 HTTP 请求 Hello 视图函数 我们先以一个最简单的 Hello World 为例来看看 djan ...

  4. idea 普通项目 改成 maven项目

    首先 pom.xml 是必要的 然后在该文件上右击 add as maven project

  5. rsa special

    [ReSnAd] -- iqmp ipmq e,c,\(\phi(n)\) 题目: class Key: PRIVATE_INFO = ['P', 'Q', 'D', 'DmP1', 'DmQ1'] ...

  6. npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

    Mac 权限不够  前面加sudo   然后输入密码

  7. linux之定时任务调度

    crond:任务调度 任务调度:是指系统在某个时间执行特定的程序或命令 任务调度分类: (1)系统工作,有些重要的工作必须周而复始地进行,如病毒扫描等 (2)个别用户工作:个别用户可能希望执行某些程序 ...

  8. Sublime Text 3 最新可用注册码(免破解)(转载)

    转载地址:https://sjolzy.cn/Sublime-Text-3-crack-registration-code.html 12年的时候分享过Sublime Text 2的注册码和破解方法. ...

  9. SpringBoot从1.5.1→2.2.4项目加包扫雷二:打不到符号java: org.springframework.boot.autoconfigure.web.相关配置错误支持包

    import org.springframework.boot.autoconfigure.web.DefaultErrorAttributes→org.springframework.boot.we ...

  10. python报错bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml.

    qpython运行 原代码:    soup = BeautifulSoup(r.text,'lxml') 报错:bs4.FeatureNotFound: Couldn't find a tree b ...