小程序系列--JS基础

JS基础 最后一遍JS基础,需要一定的语言基础

1. JS在网页中使用


  //可以放在任何地方,一般在head
  
  //引入JS资源文件
  

2. 注释

//单行注释

/*
 *多行注释
 */

3. 变量

声明变量 var 变量名; 区分大小写,驼峰式
var a,b; //undefined
var c=10,d=10;

4. 数据类型

number string boolean null undefined

var a,b; //undefined false
a+3; //Nan not a number

使用 typeof() 获取数据类型

var a=10;
typeof(a);  //number
parseInt('22.22'); //22  去掉小数
parseFloat('22.22') //22.22

5. 字符串的基本处理

JS参考手册

var test='aaaa,aaa';

  1. test.length 字符串长度
  2. test.charAt(0) 字符串下标0位置的字符 test.charAt(test.length-1) 最后一个字符
  3. test.indexOf('a') 字符串第一个字符'a'的下标
  4. test.lastIndexOf('a') 字符串最后一个字符'a'的下标
  5. test.substring(0,3) 字符串截取前3个字符,0截取开始的位置,3截取多少个字符
  6. test.replace('a','b') 将字符串中'a'字符全部替换为字符'b'
  7. test.split(',') 用','把字符串分割成数组

6. 数组

var arr=[]; //;//类型 Object
arr=['A','B','C'];

  1. arr.length 数组长度
  2. arr[0] 访问数组内容
  3. arr[1]='D' 修改数组内容
  4. arr.push('aaa','bbb') 追加数组元素,可以是多个
  5. arr.unshift('aaa') 在数组最前面添加元素
  6. arr.pop(); 从数组中移除最后一个元素,并返回
  7. arr.shift(); 从数组中移除第一个元素,并返回
  8. delete arr[0]; 删除下标0元素的值,变成 undefined,不会影响数组的长度
  9. arr.splice(3); 删除数组下标为3的元素,数组长度减1
  10. arr.splice(3,2); 从数组下标3开始,删除2个元素,数组长度减2
  11. arr.concat(['cccc','dddd']); 合并数组,并返回

7. 流程控制 if

if(boolean表达式){ 代码块 }
else if(boolean表达式){ 代码块 }
else{ 代码块 }

8. 流程控制 switch

switch(表达式){
case 表达式值1: 代码块 break;
case 表达式值2: 代码块 break;
default: 默认代码块;
}

9. while循环

var i=0;
while(i<10){
  //循环体
  i++;
}

10. for循环

for(var i=0;i<10;i++){
  //循环体
}

11. 函数

定义函数

function 函数名(形参1,形参2...){
   函数体
}

12. 定义函数

function alertMessage(msg){
  alert(msg);
}

//调用
alertMessage('AAA');

13. 函数表达式

//匿名函数
var alertMessage = function (msg){
  alert(msg);
}
//调用
alertMessage('BBB');

14. 变量应用范围

全局变量 在函数外声明
内部变量 在函数内声明,函数外不能访问内部变量

15. 对象

包含
property 属性
method 方法

js中,除了 number string boolean null undefined以外,都是对象

16. 创建一个对象

var beyond={};
beyond.formedIn='1983';
beyond['founderIn']='香港'

var beyond={formedIn:'1983',founderIn='香港'};

17. 对象中的数组

var beyond={formedIn:'1983',founderIn='香港'};
beyond.artist=['黄家驹','黄贯中','黄家强','叶世荣'];
beyond.artist[0];

18. 更新与删除对象属性

var beyond={formedIn:'1983',founderIn='香港'};
beyond.formedIn='1983';  //更新属性
delete beyond.formedIn;  //删除属性

19. 为对象添加方法

var beyond={formedIn:'1983',founderIn='香港'};
beyond.artist=['黄家驹','黄贯中','黄家强','叶世荣'];
beyond.showArtist=function(){
  for(var i=0,len=this.artist.length;i

20. 循环输出对象属性

//打印对象属性
var property;
for(property in beyond){
  //过滤掉方法
  if(typeof(beyond[property] !=='function')){
    console.log(beyond[property]);
  }
}

21. DOM 操作文档的接口

DOM --Document Object Model 文档对象模型
DOM 是几乎所有浏览器都遵循的规范

JS可以通过DOM修改文档(网页)的结构、样式、内容

22. 文档树



  
    
    
  
  
    

Coldplay

乐队于 1997 年成立于伦敦

  • Chris Martin
  • Jonny Buckland

树形结构
document
HTML
HEAD
TITLE
BODY
H1
P
ul
li

共有12种节点,常用的如下

  • 整个文档是一个文档节点
  • 每个 HTML 元素是元素节点
  • HTML 元素内的文本是文本节点
  • 每个 HTML 属性是属性节点
  • 注释是注释节点

23. 获取文档元素

  1. getElementById 根据id获取元素,需要为某个元素设置id
var title=document.getElementById('page-title');

24. 获取文档元素

  1. getElementsByTagName 根据标签获取元素
var lis=document.getElementsByTagName('li');

25. querySelector 与 querySelectorAll

根据css选择器获取元素

var lis=document.querySelectorAll('.artist-list li'); //返回找到的所有元素
var li=document.querySelector('.artist-list li'); //返回找到的第一个元素

26. 访问元素的属性

var pageTitle=document.getElementById('page-title');
var nodeName=pageTitle.nodeName; //节点名字
var text=pageTitle.innerText;    //文字内容
var pnode=pageTitle.parentNode;  //父节点
var previous=pageTitle.previousElementSibling; //上一个元素
var next=pageTitle.nextElementSibling; //下一个元素
var artistList=document.querySelector('.artist-list li');
var childs=artistList.childNodes; //获取所有的子节点
var childLength=artistList.childElementCount; //获取子节点的数量
var firstChild=artistList.firstElementChild;  //获取第一个子节点
var lastChild=artistList.lastElementChild;  //获取最后一个子节点
lastChild.innerText='修改文字';    //修改显示的文字

27. 创建并插入新的节点

var newMember=document.createElement('li'); //创建新的节点
//newMember.innerText="HAHA"; 设置显示的内容或者插入文本节点
var newMemberText=document.createTextNode('HAHA'); //创建文本类型节点
newMember.appendChild(newMemberText);  //添加节点
document.querySelector('.artist-list').appendChild(newMember); //在最后插入新建的节点

28. 在指定位置插入节点

document.querySelector('.artist-list').removeChild(newMember);
var artistList=document.querySelector('.artist-list');
artistList.insertBefore(newMember,artistList.firstChild); //在最前面插入节点
var bandMember=document.createElement('h3');
bandMember.innerText='乐队成员';
artistList.parentNode.insertBefore(bandMember,artistList.previousElementSibling);

29. 处理发生的事件

用户的一些操作认为是事件

30. 处理事件的方法

元素on打头的属性,一般都是事件的属性
处理事件的方法有3种:

  1. 在元素中使用事件的属性
  2. 在js中使用事件处理的属性
  3. 使用addEventListener()方法为元素绑定事件
//适用于简单的事件逻辑
连接

31. 在js中处理事件

window.onload=function(){
  var btn=document.querySelector('.btn');
  btn.onclick=function(){
    console.log('被点击了');
  };
  btn.onmouseover=function () {
    console.log('谁在上面');
  };
  btn.onmouseout=function(){
    console.log('离开了');
  };
}

32. addEventListener为对象绑定事件

window.onload=function(){
  var btn=document.querySelector('.btn');
  function showMessage(event){
    console.log(event);
  }
  //1 绑定的事件
  //2 事件处理的方法
  //3 是否拦截事件
  btn.addEventListener('click',showMessage,false);
}

33. 事件的传播

默认情况,事件有内向外进行传播,类似冒泡

//拦截事件,事件由外向内进行传播
btn.addEventListener('click',showMessage,true);

35. 停止事件传播

//停止事件传播
event.stopPropagation();
//去掉事件默认行为
event.preventDefault();

你可能感兴趣的:(小程序系列--JS基础)