javaScript 基础知识

JavaScript

js能干什么?

  • 数据验证
  • ajax
  • 动态的获取改变页面内容
  • 增加页面动画效果
  • 操作DOM
  • cookie
  • 添加事件
  • ...

语法特点:基于对象和事件驱动的松散型的解释性语言

JavaScript组成部分

ECMA规范

数据类型 运算符 函数 流程控制 面向对象。

BOM浏览器对象模型(Browser Object Model)

DOM文档对象模型(document Object Model)

命名规范

  1. 严格区分大小写
  2. 驼峰命名法
  3. 首字母以$ _ 字母开头,不能用数字、
  4. 命名要有意义
  5. ;代表换行

声明变量会遇到的问题

  1. 如果没有声明,直接对变量赋值,变量是一个全局变量
  2. 如果在赋值之前调用,会返回undefined
  3. 如果没有声明,也没有赋值,会报错,代码不会继续执行
  4. 在代码的声明赋值之后再次赋值,会覆盖掉之前的值
  5. 在代码声明赋值之后再次声明同样的变量,会生成新的变量,覆盖掉之前的。

JavaScript数据类型

  1. 初始数据类型
    1. number
    2. null
    3. undefined
    4. string
    5. Boolean
  2. 引用数据类型
    1. object

typeof 操作符,是一个检测数据类型的一元运算符,并且返回的结果始终是一个字符串。

运算符

  1. 算数运算符
      • — * / % var++ ++var --var var--
  2. 关系运算符
    1. < = >= <= == === !=

  3. 赋值运算符
    1. += -= %= /= *= =
  4. 逻辑运算符
    1. && || ! 返回布尔值
  5. 一元运算符
    1. typeof
    2. +正号
      • 负号
    3. delete
    4. new创建一个新对象
    5. ++ --
  6. 三元运算符
    1. var 变量名=表达式 ? 真值:假值;
  7. 特殊运算符
    1. ',' 用来一次声明多个变量
    2. () 调用函数;增加运算优先级

流程控制

  • 流程:就是代码执行的顺次
  • 流程控制:通过规定的语句让代码按照一定的顺序去执行
  1. 顺序结构:按照从上到下,代码书写的顺序进行执行
  2. 选择结构(分支结构,条件结构):通过一定的条件让代码按照特定的方式执行
    1. if...else
    2. 单路分支,多路分支,嵌套分支
    3. switch case分支
    4. break 条件满足后跳出并终止循环,如果后面有代码,会继续往下执行;
    5. continue 跳出并且终止当前的循环,如果下个值仍满足循环条件,则继续循环。
    6. default case分支条件都不满足时执行的代码;
  3. 循环结构:在指定的条件下重复的执行某一段代码
    1. for循环
    2. while(表达式){循环体}先判断条件是否满足,才会执行循环
    3. do{}while() 会先执行一次,然后在判断是否满足;

函数

函数重载:根据同一个函数参数的类型或者数量不同,来实现不同的函数体。

函数作用域

指一段代码的作用范围

  • 根据运行的环境来划分作用域
  • 全局作用域
  • 函数作用域

代码的运行环境

  • 宿主环境
  • 执行环境
    • 全局环境
    • 函数环境 局部环境

回调函数

把一个函数的指针作为另一个函数的参数,调用这个参数的时候,这个函数就是回调函数

闭包函数

在一个函数的内部再次声明一个函数,使其能够调用外部函数的变量和方法;在函数外部调用外部函数的时候,就形成了闭包

递归函数

在函数内部直接或者间接的调用自己

类名的添加删除

obj.classList.add('hot')添加hot类
obj.classList.remove('hot')删除hot类
obj.classList.toggle('hot')如果本来有hot类,会删除,如果没有会添加一个hot类

节点属性

box.style.cssText="width:200px;height:33px"

1.节点属性能用来干什么?

通过节点的属性,能够获取到每个节点之间的关系,并且可
以通过这种关系,准确快速的获取到相应节点的对象。

 获得节点关系的属性
对象.parentNode 获得父节点的引用
对象.childNodes 获得子节点的集合
对象.firstChild 获得第一个子节点的引用
对象.lastChild 获得最后一个子节点的引用
对象.nextSibling 获得下一个兄弟节点的引用
 对象.previousSibling 获得上一个兄弟节点的引用

会识别空格


2.通过节点属性我们能获得每个节点的详细信息(包
括节点类型、节点名字、节点值)
 获得节点信息的属性
              节点类型  节点名字    节点值
          nodeType(数值) nodeName  nodeValue

元素节点        1       标签名         null
属性节点        2       属性名          属性值
文本节点        3       #text           文本
注释节点        8       #comment      注释的文字
文档节点        9       #document     null

节点的方法

一、创建节点
1. 创建元素节点
document.createElement("元素标签名")

2. 创建属性节点
A.对象.属性="属性值“   标准属性

B. 对象.setAttribute(属性名,属性值)设置
  对象.getAttribute(属性名)  获取

C. arrt=document.createAttribute(“属性名”);
 arrt.nodeValue=“属性值”
 obj.setAttributeNode(arrt);
  1. 创建文本节点

    对象.innerHTML= '';
    document.createTextNode("文本");

二、追加到页面当中
父对象.appendChild(追加的对象) 插入到最后
父对象.insertBefore(要插入的对象,之前的对象) 插入到某个对象之前

三、删除节点

 父对象.removeChild(删除的对象)
 如果确定要删除节点,最好也清空内存 对象=null;

 、修改(替换)节点
 父对象.replaceChild(新节点,被修改的节点);

四、复制节点

  newobj=obj.cloneNode() 方法创建指定节点的副本。
  父对象.appendChild(newobj)
  该方法有一个参数(true 或 false)。如果设置为true,所
  有的子节点也会克隆,否则只会克隆本节点。 

五。克隆节点

var newbox=box.clone();
var newbox=box.cloneNode(true);

元素尺寸的属性

  获得元素实际的高度和宽度(加上边框的宽度)
  offsetWidth
    , offsetHeight(数值类型)

   获得浏览器窗口的高度和宽度
  document.documentElement.clientHeightu 
  document.documentElement.clientWidth
  obj.style 属性
  getComputedStyle(obj,null).属性

  offsetTop offsetLeft
  返回元素相对于具有定属性的父元素的坐标(left top 值)
  1.自身和父元素都没有定位属性
  自身的外间距+父元素的内边距+父元素边框+父元素外边距
  2.自身没有定位属性,父辈元素定位(爷元素)
  自身外边距+父元素内边距+父元素边框+父元素的外边距
  3.自身定位 父辈元素定位
  自身外边距+自身left




获取具有滚动条元素的位置属性
  scrollTop
  scrollLeft
  具有滚动条的元素在滚动的时候,他的内部元素超出该元
  素顶部或是左边的距离。

  document.body.scrollTop               谷歌
  document.documentElement.scrollTop   火狐

JavaScript事件分类

  补充事件:
  onscroll
  onresize
  重点讲解事件:
  onmousewheel 鼠标滚动;IE
  addEventListener("DOMMouseScroll",scrollfun,false) W3C
  mouseout 鼠标离开
  mouseover 鼠标悬停

事件绑定

  1.一般绑定事件
  在脚本中绑定
  直接在HTML元素绑定
  2.同一个事件绑定多个事件处理程序
  IE:
  对象.attachEvent("事件(on)",move) 添加
  对象. detachEvent("事件(on)","处理程序") 删除
  FF:
  对象.addEventListener("事件","处理程序",布尔值) 添加
  对象.removeEventListener("事件","处理程序",布尔值) 删除

  内容
    obj.innerHTML
    设置或者获取html元素的内容(识别标签对)

JavaScript事件分类
  补充事件:
  onscroll
  onresize
  重点讲解事件:
  onmousewheel 鼠标滚动;IE
  addEventListener("DOMMouseScroll",scrollfun,false) W3C
  mouseout 鼠标离开
  mouseover 鼠标悬停

事件对象的属性

  1.关于鼠标事件
    相对于浏览器位置的
    clientX 当鼠标事件发生的时候,鼠标相对于浏览器X轴的位置
    clientY 当鼠标事件发生的时候,鼠标相对于浏览器Y轴的位置

    相对于屏幕位置的
    screenX 当鼠标事件发生的时候,鼠标相对于屏幕X轴的位置
    screenY 当鼠标事件发生的时候,鼠标相对于屏幕Y轴的位置

    相对于事件源的位置
    offsetX 当鼠标事件发生的时候,鼠标相对于事件源X轴的位置
    offsetY 当鼠标事件发生的时候,鼠标相对于事件源Y轴的位置

滚轮事件

 谷歌 上120 下-120
  document。addEventListener('mousewheel',function(e){
  e.wheelDelta
  },false)
 
 IE 上120 下-120
  document.attachEvent('onmousewheel',funcrtion(e){
  window.event.wheelDelta
  })
 火狐 上-3 下3
  document.addEventListener('DOMMouseScroll',function(e){
  e.detail
  })

事件对象阻止浏览器默认行为

  if (ev.preventDefault )
  ev.preventDefault(); //阻止默认浏览器动作(W3C)
  else
  ev.returnValue = false;//IE中阻止函数器默认动作的方式

if(e.preventDefault){
      // 阻止默认浏览器动作
      e.preventDefault();
    }else{
      e.returnValue=false
    }

事件对象的属性

  关于鼠标移入移出的
  mouseout mouseover
  事件对象属性
    事件对象.fromElement 鼠标从哪来 IE
    事件对象.toElement 鼠标到哪去 IE
    事件对象.relatedTarget FF
    在mouseover事件中代表IE中的fromElement
    在mouseout事件中代表IE中的toElement

键盘事件

  keydown  keyup  keypress
  键盘码 e.keyCode
    a A(65)  回车(13) 空格(32)  shift(16)  Ctrl(17) 
    alt(18)  左上右下(37 38 39 40)

  弹出键盘码
    document.onkeydown=function(e){
      alert(e.keyCode)
    }

  判断键盘码
    document.onkeydown=function(e){
      if(e.keyCode==16)
      alert(true)
    }

  或者
    document.onkeydown=function(e){
      if(e.shiftKey)
      alert(true)
    }

  altKey 判断alt键是否被按下 按下是true 反之是false 布尔值
  ctrlKey
  shiftKey
  type 用来检测事件的类型 主要是用于多个事件通用一个事件处理程序
  的时候

事件流

  当页面元素触发事件的时候,该元素的容器以及整个页面都
  会按照特定顺序响应该元素的触发事件,事件传播的顺序叫
  做事件流程。

  事件流的分类
    1.冒泡型事件  (所有的浏览器都支持)
    由明确的事件源到最不确定的事件源依次向上触发。
    addEventListener(事件,处理函数,false)
    on+事件类型
    attachEvent(type,fn)------IE

    2.捕获型事件 (IE不支持 w3c标准 火狐)
    不明确的事件源到明确的事件源依次向下触发。
    addEventListener(事件,处理函数,true)
        var box=$('.box')[0];
        var son=$('.son')[0];
        var son1=$('.son1')[0];

        son.addEventListener('click',function(e){
          alert(1)
        },false);
        son1.addEventListener('click',function(e){
          alert(2)
        },false);
        box.addEventListener('click',function(e){
          alert(3)
        },false);
        或者
        son.onclick=function(e){
        e.stopPropagation();
        alert(1)
        }
        box.onclick=function(e){
          alert(2)
        }

阻止事件流(事件对象)

    IE: e.cancelBubble=true;
    FF: e.stopPropagation();

获得目标事件源的对象(就是找出这是在哪个标签上发生的事件)

    IE: e.srcElement
    FF: e.target

事件委派(通过给父元素添加事件达到给子元素变换的作用)

节点

  • box.children 所有的元素节点
  • childElementCound 所有元素节点的个数

csstext

let box=$('.box')[0];
let aa=$('<div>')
aa.style.cssText="width:200px;height:200px;background:green";
注意书写规范;

我叫洱月,我愿意陪你到洱海风花雪月,你,看到我了吗?

码字不易,点个赞呗

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • 本文是针对刚学编程的小白,都是一些基础知识,如果想了解更多深层一点的东西,欢迎移步本人博客!! 博客地址 点击跳转...
    西巴撸阅读 237评论 0 0
  • 注:本文所有知识点总结或摘抄自廖雪峰javascript教程,点击查看更详细的讲解。 1.javascript简介...
    hanyuntao阅读 524评论 0 13
  • 对比犀牛书那本厚厚的“字典”,《javascript高级程序设计》可以算是一本由浅入深的好读物。。这段时间翻了前几...
    lurker阅读 1,323评论 0 1
  • 蔬菜成熟的时候,会有人从别的地方来收,他们垄断着价格。有时朴实的菜农会等着另一个买家给更高的价钱,或者等几天再卖。...
    琼途阅读 226评论 0 0
  • 鸢尾花 蝴蝶轻飞碧水边,迎风曼舞惹人牵。 若君惜取花开意,醉在馨香万里天。 (注:鸢尾花因花瓣形如鸢鸟尾巴而称之,...
    繁花落尽深眸阅读 5,249评论 7 22