• 前端基础知识

     

    HTML基础

    基本构成

    对于中文网页需要使用 <meta charset="utf-8"> 声明编码,否则会出现乱码。有些浏览器(如 360 浏览器)会设置 GBK 为默认编码,则你需要设置为 <meta charset="gbk">

    基本标签

    链接a

    链接的地址在 href 属性中指定

    图片img

    表单form

    按钮button

    定义可点击的按钮(通常与 JavaScript 一起使用来启动脚本)。

     

    表格table

    单元格合并

    table属性

    table 的属性如:border、width、height 等,建议写在 css 样式中。<caption> 元素可以设置表格的标题。

    thead、tbody 、tfoot

    <thead><tbody><tfoot> 把表格分成多个逻辑区域,以便之后可以用 CSS 更好的控制表现。

     

    有序列表、无序列表、自定义列表

    框架

    文本格式化

    样式、区块

    HTML5中input新类型

    input 类型是 HTML5 中的新类型:color、date、datetime、datetime-local、month、week、time、email、number、range、search、tel 和 url。

    语法<input type="value">

    描述
    button定义可点击的按钮(通常与 JavaScript 一起使用来启动脚本)。
    checkbox定义复选框。
    color定义拾色器。
    date定义 date 控件(包括年、月、日,不包括时间)。
    datetime定义 date 和 time 控件(包括年、月、日、时、分、秒、几分之一秒,基于 UTC 时区)。
    datetime-local定义 date 和 time 控件(包括年、月、日、时、分、秒、几分之一秒,不带时区)。
    email定义用于 e-mail 地址的字段。
    file定义文件选择字段和 "浏览..." 按钮,供文件上传。
    hidden定义隐藏输入字段。
    image定义图像作为提交按钮。
    month定义 month 和 year 控件(不带时区)。
    number定义用于输入数字的字段。
    password定义密码字段(字段中的字符会被遮蔽)。
    radio定义单选按钮。
    range定义用于精确值不重要的输入数字的控件(比如 slider 控件)。
    reset定义重置按钮(重置所有的表单值为默认值)。
    search定义用于输入搜索字符串的文本字段。
    submit定义提交按钮。
    tel定义用于输入电话号码的字段。
    text默认。定义一个单行的文本字段(默认宽度为 20 个字符)。
    time定义用于输入时间的控件(不带时区)。
    url定义用于输入 URL 的字段。
    week定义 week 和 year 控件(不带时区)。

    HTML其它

    细表格线的2种方法

    通过tabel属性设置

     

    通过CSS设置(常见)

    重点:border-collapse:collapse;

    自适应手机屏幕meta标签

    支持汉字和自适应屏幕

     

    自动获取焦点

    该input标签后添加autofocus="autofocus"即可autofocus="autofocus"

     

    返回首页和上一页

    设置网站ico图标

    制作一个尺寸16x16大小的图;

     

     

    =====================================END===============================

     

     

     

     

     

     

    CSS基础

    CSS引入方式

    1. 行内样式

    在HTML元素中使用style属性引入CSS样式。实际在写页面时不提倡使用,在测试的时候可以使用。

    2. 内部样式表

    在HTML文档头部 <head> 区域使用<style> 元素 来包含CSS。

    3. 外部样式表

    CSS代码保存在扩展名为.css的样式表中 HTML文件引用扩展名为.css的样式表,有两种方式:链接式、导入式。

    (1)链接式(推荐)
    (2)导入式

    实例:

    (3)链接式和导入式的区别

    4. 样式优先级

    行内样式>内部样式>外部样式(后两者是就近原则)

     

    CSS单位

    像素(px)是相对于观看设备的。对于低 dpi 的设备,1px 是显示器的一个设备像素(点)。对于打印机和高分辨率屏幕,1px 表示多个设备像素。

    元素显示模式转换

    如果 display 设置为 none,则该框及其所有内容就不再显示,不占用文档中的空间。

    CSS选择器

    标签选择器

    类选择器

    类名可以由数字、字典、下划线和横线,但不能以数字开头。

    ID选择器(不能重复)

    分组(并集)选择器

    选择器之间用逗号隔开;表示同时选中多个选择器对应的元素,

    复合(子集)选择器

    选择器之间不能有空格,要紧挨在一起

    属性选择

    根据元素中的属性或属性值来选取指定元素。

    伪类选择器

    伪类表示元素的一种特殊状态

    通配选择器

    作用:用来选中页面中所有的元素

    语法:*{ }

     

    兄弟元素选择器

    +相邻选择器

    作用:选中一个元素后紧挨着的指定的兄弟元素

    语法:前一个+后一个(作用在后一个)

    ~兄弟选择器

    作用:选中后边所有的制定兄弟元素

    语法:前一个~后边所有

    后代(包含)选择器

    作用:选中指定元素的指定后代元素

    语法:祖先元素 后代元素{ }

    子元素选择器

    作用:选中指定父元素的子元素

    语法:父元素 > 子元素

    序选择器

    伪元素

    ::first-line

    ::first-line 伪元素用于向文本的首行添加特殊样式。

    ::first-line 伪元素只能应用于块级元素。

    ::first-letter

    ::first-letter 伪元素用于向文本的首字母添加特殊样式。

    ::before

    ::before 伪元素可用于在元素内容之前插入一些内容。

     

    <h1> 元素的内容之前插入一幅图像

    ::after

    ::after 伪元素可用于在元素内容之后插入一些内容。

    ::selection

    ::selection 伪元素匹配用户选择的元素部分。

    以下 CSS 属性可以应用于 ::selection

    CSS定位和浮动

    div、h1 或 p 元素常常被称为块级元素。这意味着这些元素显示为一块内容,即“块框”。与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”。

    定位机制

    CSS 有三种基本的定位机制:普通流、浮动和绝对定位。

    除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。

    块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。

    行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为行框(Line Box),行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。

    定位position

    元素框从文档流完全删除,并相对于其包含块定位。

    注意:相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。

     

    浮动float

    在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

     

     

     

     

    CSS其它

     

    ul li去掉圆点

    <a>标签去掉下划线

    文字大小、加粗、居中等

    (1) inline-block

    (2) block

    input属性

    1.常用样式

     

    2.复选框改变大小 还能改变他的样式

    position属性,定位底部

    position 属性规定应用于元素的定位方法的类型

    有五个不同的位置值:

     

    背景图片透明

     

    button禁用和开启

    兄弟姐妹

    children()与find()

    children(selector) 方法是返回匹配元素集合中每个元素的所有子元素仅儿子辈),参数可选

    find(selector)方法是返回匹配元素集合中每个元素的后代。参数是必选的

    单选和多选的设置选中

    单选项的设置(选中)

    多选项设置(选中)

    选中与取消

     

    登录框居中

     

     

     

     

     

     

    =========================END===============================

     

     

     

     

     

     

    JQUERY基础

    引入和使用

    在 HTML5 中,不必在 <script>标签中使用 type="text/javascript"。JavaScript 是 HTML5 以及所有现代浏览器中的默认脚本语言!

    1. 外部引入

    (1)站外引用
    (2)下载 jQuery到本地

    这两个版本都可以从官网 jQuery.com 下载。

    2. 内部引入

    独立文件中使用 jQuery 函数

    如果您的网站包含许多页面,并且您希望您的 jQuery 函数易于维护,那么请把您的 jQuery 函数放到独立的 .js 文件中。

    3. 行内引入

    语法

    jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。

    基础语法: $(*selector*).*action*()

    jQuery 使用的语法是 XPath 与 CSS 选择器语法的组合。

    选择器

    基本选择器

    选择器语法作用
    id选择器$("#test")根据id匹配一个元素
    class类选择器$(".test")根据类class匹配元素
    标签选择器$("p")根据元素名称(标签)匹配所有元素
    所有元素$("*")匹配所有元素
    并集$("A,B")A元素和B元素
    交集$("AB")A元素中的B元素

    层级选择器

    选择器语法描述
    后代选择$(A B)A下的所有B(包括B的子级)
    子选择$(A>B)A下的所有B(不包括B的子级)
    兄弟$(A+B)A相邻的下一个B
    兄弟$(A~B)A相邻的后面的所有B
    兄弟$(A).siblings()A所有的兄弟

    后代(元素之间空格)

    A下的所有B(包括B的子级),可以用find()代替它。

    子选择器(>)

    指定元素的直接后代元素,即子元素,可以用children()代替它。。

    相邻兄弟选择器(+)

    紧接在A元素后的B元素,可以用next()替代它。

    一般兄弟选择器(~)

    一般兄弟选择器 $("A ~ B"),选取A元素之后的所有兄弟元素,可以用nextAll()代替它。

    基本过滤选择器

    以 “:” 开头进行过滤

    语法描述例子
    first()或 :first选取第一个元素$("#test:first").css("color","red");
    last()或 :last选取最后一个元素$("#test:last").css("color","red");
    :not(selector)不包括指定内容的元素$("p:not('#one')").css("color","red");
    :even选取所有索引为偶数的元素,索引从0开始$("tr:even").css("color","red");
    :odd选取所有索引为奇数的元素,索引从0开始$("tr:odd").css("color","red");
    :eq(index)选取索引等于index的元素,索引从0开始$("li:eq(2)").css("color","red");
    :gt(index)选取索引大于index的元素,索引从0开始 
    :lt(index)选取索引小于index的元素,索引从0开始 
    :header选取索引的标题标签 

    属性选择器

    语法描述
    Element[attribute]选取拥有此属性的选择器
    Element[attribute=value]选取指定属性值为value的元素
    Element[attribute!=value]选取指定属性值不等于value的元素
    Element[attribute^=value]选取指定属性值以value开始的元素
    Element[attribute$=value]选取指定属性值以value结束的元素
    Element[attribute*=value]选取指定属性值中含有value的元素

    表单选择器

    :input 选择由input生成的表单控件 :text 选择单行文本框 :password 选择密码框 :radio 单选按钮 :checkbox 复选按钮

    表单对象属性过滤选择器

    选择器语法
    可用元素$("A:enabled")
    不可用元素$("A:disabled")
    单选、复选框被选中的元素$("A:checked")
    下拉框被选中的元素$("A:selected")

    子元素选择器

    实例

    元素 元素
    语法描述
    $("*")选取所有元素
    $(this)选取当前 HTML 元素
    $("p.intro")选取 class 为 intro 的

    元素

    $("p:first")选取第一个

    元素

    $("ul li:first")选取第一个
      元素的第一个
    • 元素
    $("ul li:first-child")选取每个
      元素的第一个
    • 元素
    $("[href]")选取带有 href 属性的元素
    $("a[target='_blank']")选取所有 target 属性值等于 "_blank" 的 元素
    $("a[target!='_blank']")选取所有 target 属性值不等于 "_blank" 的 元素
    $(":button")选取所有 type="button" 的 元素 和
    $("tr:even")选取偶数位置的
    $("tr:odd")选取奇数位置的
    $("h1,div,p")所有

    元素

    常用事件

    鼠标事件键盘事件表单事件文档/窗口事件
    click 单击keypresssubmitload
    dblclick 双击keydownchangeresize
    mouseenter 鼠标指针进入keyupfocus 获得焦点scroll
    mouseleave 鼠标指针离开 blur 失去焦点unload
    hover 悬停   
    mousedown 按下鼠标按键时   
    mouseup 松开鼠标按钮   

     

    JQuery 效果

    隐藏hide与显示show

    toggle()

    使用 toggle() 方法来切换 hide() 和 show() 方法。

    淡入淡出

    jQuery 拥有下面四种 fade 方法:

     

    JQuery HTML

    获取和设置(内容、属性)

     

    添加和删除元素

     

    CSS添加、移除、设置

     

    尺寸

     

    JQuery遍历

    通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。

    向上遍历DOM树(祖先)

    向下遍历DOM树(后代)

    水平遍历DOM树(同胞)

    过滤

    三个最基本的过滤方法是:first(), last() 和 eq()

    其他过滤方法,比如 filter() 和 not() 允许您选取匹配或不匹配某项指定标准的元素。

     

    滑动

    jQuery 拥有以下滑动方法:

    动画

    创建animate

    animate() 方法

    用于创建自定义动画。

    操作多个属性
    使用相对值
    使用预定义的值

    您甚至可以把属性的动画值设置为 "show"、"hide" 或 "toggle"

    使用队列功能

    如果您编写多个 animate() 调用,jQuery 会创建包含这些方法调用的"内部"队列。然后逐一运行这些 animate 调用。

    动画停止stop

     

    链接式操作

    有一种名为链接(chaining)的技术,允许我们在相同的元素上运行多条 jQuery 命令,一条接着另一条。

     

    ajax请求

    Ajax 是一种异步、无刷新(或者说局部页面刷新)技术。

    jQuery 封装好的 Ajax

    $.ajax({})

    参数:

    type:请求方式GET/POST

    url: 请求地址 url

    async:是否一步,默认是 true 表示异步

    data:发送到服务器的数据

    dataType:预期服务器返回的数据类型

    contentType:设置请求头

    success:请求成功时调用此函数

    error:请求失败时调用此函数

    $.get()

    这是一个简单的 GET 请求功能以取代复杂 $.ajax。

    请求成功时可调用回调函数,如果需要在出错时执行函数,请使用 $.ajax

    $.post()

    $.post$.get用法一模一样。

    $.getJSON 只能获取 json 格式的数据,其他的无法获取,而 $.get 和 $.post都可以获取。

     

    JS其它(一)

    实时监听INPUT输入

    定时器和延时器

    语法

    setInterval(code, milliseconds); setInterval(function, milliseconds, param1, param2, ...)

    参数描述
    code/function必需。要调用一个代码串,也可以是一个函数。
    milliseconds必须。周期性执行或调用 code/function 之间的时间间隔,以毫秒计。
    param1, param2, ...可选。 传给执行函数的其他参数(IE9 及其更早版本不支持该参数)。

    clearInterval(id_of_setinterval)

    clearInterval() 方法可取消由 setInterval() 函数设定的定时执行操作。

    clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。

    setInterval()产生一个定时器,定义一个定时器标识 ;使用 clearInterval(定时器标识) 来停止。

    用法1

    用法2

    总结

    setInterval与clearInterval都是直属于window对象。

    第一种用法思路比较清晰,先设置一个函数,在通过setInterval来自行调用,但是将其在别处调用比较困难;

    第二种方法看起来比较乱,在setInterval内部写下自行调用的函数,然后在给他套上一个有名函数,然后通过调用有名函数来实行自动,在别处调用比较方便。

    setTimeout和setInterval的区别

    setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

    setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。

     

    自定义休眠函数

    原理:实际上,该例子不是使js脚本进入休眠,而是因为js是单线程,while(true){}死循环调度cpu,使得whlie(){}后面的程序被阻塞,进而实现休眠的假象。

     

    循环终止和退出

     

    获取DOM元素的属性值

    $(this).attr("id")

    $(this).attr("class")

     

    鼠标进入与离开的事件

    mouseover 事件在鼠标指针进入被选元素或任意子元素时都会被触发,

    mouseenter 事件只有在鼠标指针进入被选元素时被触发。

    1.mouseover与mouseout

    2.mouseenter与 mouseleave

    获取当前时间(年月日时分秒)

    字符与数字的转换

    object对象与json字符串的转换

    object = JSON.parse("字符串");

    string = JSON.stringify(对象);

    随机数

    ::before与::after

    css3为了区分伪类和伪元素,伪元素采用双冒号写法。

    常见伪类——:hover,:link,:active,:target,:not(),:focus 常见伪元素——::first-letter,::first-line,::before,::after,::selection

    ::before和::after下特有的content,用于在css渲染中向元素逻辑上的头部或尾部添加内容。

    这些添加不会出现在DOM中,不会改变文档内容,不可复制,仅仅是在css渲染层加入。

    所以不要用:before或:after展示有实际意义的内容,尽量使用它们显示修饰性内容。

    content属性

    ::before和::after必须配合content属性来使用,content用来定义插入的内容,content必须有值,至少是空。默认情况下,伪类元素的display是默认值inline,可以通过设置display:block来改变其显示。

    1. string

      使用引号包一段字符串,将会向元素内容中添加字符串。如:a:after{content:""}

    2. attr()

      通过attr()调用当前元素的属性,比如将图片alt提示文字或者链接的href地址显示出来。

    3. url()/uri()

      用于引用媒体文件。

    4. counter()

      调用计数器,可以不使用列表元素实现序号功能。配合counter-increment和counter-reset属性使用:

      h2:before { counter-increment: chapter; content: "Chapter " counter(chapter) ". " }

     

    background参数

    在一个声明中设置所有背景属性

    参数描述
    background-color规定要使用的背景颜色。
    background-position规定背景图像的位置。
    background-size规定背景图片的尺寸。
    background-repeat规定如何重复背景图像。
    background-origin规定背景图片的定位区域。
    background-clip规定背景的绘制区域。
    background-attachment规定背景图像是否固定或者随着页面的其余部分滚动。
    background-image规定要使用的背景图像。
    inherit规定应该从父元素继承 background 属性的设置。

    1. background-repeat

    用来设置背景图像的铺排填充方式, 默认值: repeat 。

    repeat 表示横向纵向上均平铺;

    no-repeat 表示不平铺;

    repeat-x 表示横向上平铺,

    repeat-y 表示纵向上平铺

    round 表示背景图像自动缩放直到适应且填充满整个容器。 注意: 当设置为 round 时, background-size 的 cover 和 contain 属性失效。

    space 表示背景图像以相同的间距平铺且填充满整个容器或某个方向. 注意: 当 background-size 设置为 cover 和 contain 时, background-rapeat 的 space 属性失效。

    2. background-position

    用来设置背景图像的位置, 默认值: 0% 0%, 效果等同于 left top。

    如果设置一个值, 则该值作用在横坐标上, 纵坐标默认为50%(即center) ; 如果设置两个值, 则第一个值作用于横坐标, 第二个值作用于纵坐标,

    取值可以是方位关键字[left\top\center\right\bottom], 如 background-position: left center ;

    也可以是百分比或长度, 百分比和长度可为设置为负值, 如: background-position: 10% 30px ;

    3. background-attachment

    用来设置背景图像是随对象内容滚动还是固定的,默认值 scroll。

    fixed 背景图像相对窗体固定,即内容滚动时,图片不动; scroll 相对元素固定,背景图像跟随元素本身,元素内容滚动时背景图像不动; local 相对元素内容固定,背景图像跟随元素内容。

    jQuery 事件 target 属性

    语法:event.target

    规定返回的最后一个值来自哪个事件。这个 event 参数来自事件绑定函数。

    例:显示哪个 DOM 元素触发了事件

    checkbox选中状态及事件

    jquery判断checked的三种方法

    jquery赋值checked的几种写法

    checkbox click和change事件

     

    表格table

    基本样式

    tabel标签属性

    tabel通用属性

    这是<table><tr><td>都识别的属性

    separate,默认值,边框独立;

    collapse,相邻边框被合并。

    字符串截取、分割、连接

    substring函数(截取)

    在指定位置截取字符串。用于返回字符串中指定位置的子字符串。

    substr函数(截取)

    作用是用于从指定位置截取指定长度的字符串。

    split函数(分割)

    作用是将字符串分割为子字符串,并将结果作为字符串数组返回。

    indexOf、lastIndexOf (位置)

    指定的子串在字符串中的位置,如果没有找不到子串,则返回 -1。

    join方法(连接)

    用于数组中元素的连接

     

    JQuery三种提示框

    alert()提示信息框

    confirm()确认框

    如果点击确定按钮,则 confirm() 返回 true。如果点击取消按钮,则 confirm() 返回 false。

    prompt()输入文本框

     

     

    JS其它(二)

    ES6数组去重复元素

    ES6 扩展运算符三个点(...)

    记住一句话:对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中

    https://blog.csdn.net/astonishqft/article/details/82899965

    jQuery清空file文件域

     

     

    jQuery数组的操作(一)

    1、创建数组

    2、数组元素的访问

    3、数组元素的添加

    4、数组元素的删除

    splice() 方法,可以删除数组中的指定元素。

    删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素;

    常用实例:

     

    5、数组的截取和合并

    需要注意的是只能用于数组或字符串,如果被连接(前面的a)的是数值、布尔值、对象,就会报错,字符串连接数组时,字符串会跟数组首元素拼接成新元素,而数组连接字符串则会追加新元素(这点我也不清楚原委,知情者请透露),对于数组里面包含数组、对象的,连接后保持原样

     

    6、数组元素的排序

    7、数组元素的字符串化

    8、随机打乱数组

     

     

    jQuery数组的操作(二)

    1. $.each(array, [callback]) 遍历[常用]

    each遍历是for循环的变体,但比for循环强大.在数组中,它可以轻松的获取数组索引及对应的值。如果需要退出 each 循环可使回调函数返回 false。

     

    2. $.grep(array, callback, [invert]) 过滤数组[常用]

    $.grep() 函数使用指定的函数过滤数组中的元素,并返回过滤后的数组。

    提示:源数组不会受到影响,过滤结果只反映在返回的结果数组中。

    语法

    参数描述
    arrayArray类型 将被过滤的数组。
    functionFunction类型 指定的过滤函数。grep()方法为function提供了两个参数:其一为当前迭代的数组元素,其二是当前迭代元素在数组中的索引。
    invert可选。 Boolean类型 默认值为false,指定是否反转过滤结果。如果参数invert为true,则结果数组将包含function返回false的所有元素。

    例:

    3. $.inArray(val,array)判断值是否存在于数组中[常用]

    解释: 确定第一个参数在数组中的位置, 从0开始计数(如果没有找到则返回 -1 。

     

    4. $.map(array,[callback(element,index)])按给定条件转换数组 [一般]

    解释:对于array中的每个元素,调用callback()函数,最终返回一个新的数组,原数组不变。

     

    5. $.merge(first,second)合并两个数组[一般]

    解释: 返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素;

    这个方法是用jQuery的方法替代原生concat()方法, 但功能并没有concat()强大, concat()可以同时合并多个数组。

    6. $.unique(array)过滤数组中重复元素[不常用]

    解释: 删除数组中重复元素. 只处理删除DOM元素数组,而不能处理字符串或者数字数组. 第一次看到这个方法,觉得这是个很便捷的方法, 可以过滤重复, 哈, 多完美, 但仔细一看, 仅限处理DOM元素. 功能8折了.所以, 我给它定义成了一个不常用的元素, 至少, 我用jQuery以来没用到过它

    7. $.makeArray(obj) 将类数组对象转换为数组[不常用]

    解释: 将类数组对象转换为数组对象, 类数组对象有 length 属性,其成员索引为0至 length-1. 这是个多余的方法, 无所不能的$本来就包含了这个功能. jQuery官网上解释的非常模糊. 其实, 它就是将某个类数组对象(比如用getElementsByTagName获取的元素对象集合)转换成数组对象.

    8. $(dom).toArray()将所有DOM元素恢复成数组[不常用]

    解释: 把jQuery集合中所有DOM元素恢复成一个数组; 并不常用的方法, 个人甚至觉得它和$.makeArray一样多余.

    9. 数组的交、并、差

    (1)交集
    (2)并集
    (3) 差集

     

     

    数组的交集、差集、并集、补集

    方法1:使用 jQuery 实现

    注意:数组a和b的顺序不一样,结果不一样,使用之前最好测试看下结果

     

     

    方法2:使用 ES6 语法实现

    在 ES6 中我们可以借助扩展运算符(…)以及 Set 的特性实现相关计算,代码也会更加简单些。

    方法3:使用ES5语法实现

    (1) 直接使用 filter、concat 来计算
    (2)对 Array 进行扩展
    a. 为方便使用,我们可以对数组功能进行扩展,增加一些常用的方法。

     

    b. 为方便使用,我们可以对数组功能进行扩展,增加一些常用的方法。

     

     

     

     

     

     

     

    JS读取本地文件

    一、上传文件方法

    二、将读取的文件转化成数组

    FileReader读取本地文件

    FileReader是一种异步读取文件机制,结合input:file可以很方便的读取本地文件。

    1、首先需要实例化一个FileReader对象

    2、FileReader提供的方法:

      ①readAsArrayBuffer(file): 按字节读取文件内容,结果用ArrayBuffer对象表示;

      ②readAsBinaryString(file): 按字节读取文件内容,结果为文件的二进制串;

      ③readAsDataURL(file): 读取文件内容,结果用data:url的字符串形式表示;

      ④readAsText(file,encoding): 按字符读取文件内容,结果用字符串形式表示;

      ⑤abort(): 终止文件读取操作.

      其中readAsDataURL和readAsText较为常用,这里只对这两者进行说明。

    3.1readAsDataURL会将文件内容进行base64编码后输出:

    3.2由于媒体文件的src属性,可以通过采用网络地址或base64的方式显示,因此我们可以利用readAsDataURL实现对图片的预览。

     

     

    jQuery对象和DOM对象的区别

    简要

    jquery对象和dom对象区别

    1. jquery对象

    $("#div")得到的是[object Object],即jquery对象。

    2. dom对象

    document.getElementById("div")得到的是[object HTMLDivElement],即dom对象。

    3. jquery对象转成dom对象

    两种方法:[index]和.get(index)

    $("#div")[0]或者$("#div").get(0)

    4. dom对象转成jquery对象

    只需要用$()把DOM对象包装起来。

    var v = document.getElementById("myID"); //DOM对象 var $v = $(myID); //jQuery对象

    jquery对象和dom对象区别

    详情

    以前一直认为jquery中的$("#id")和document.getElementById("id")得到的效果是一样的,今天做特效的时候才发现并不是这么一回事,通过测试得到:

    1、alert($("#div"))得到的是[object Object]

    2、alert(document.getElementById("div"))得到的是[object HTMLDivElement]

    3、alert($("#div")[0])或者alert($("#div").get(0))得到的是[object HTMLDivElement]

    原因解读:

    document.getElementById()返回的是DOM对象,而$()返回的是jQuery对象

    什么是jQuery对象?

    ---就是通过jQuery包装DOM对象后产生的对象。jQuery对象是jQuery独有的,其可以使用jQuery里的方法。 比如: $("#test").html() 意思是指:获取ID为test的元素内的html代码。其中html()是jQuery里的方法** 这段代码等同于用DOM实现代码: document.getElementById("id").innerHTML; 虽 然jQuery对象是包装DOM对象后产生的,但是jQuery无法使用DOM对象的任何方法,同理DOM对象也不能使用jQuery里的方法.乱使用会 报错。比如:$("#test").innerHTML、document.getElementById("id").html()之类的写法都是错误的。 还有一个要注意的是:用#id作为选择符取得的是jQuery对象与document.getElementById("id")得到的DOM对象,这两者并不等价。请参看如下说的两者间的转换。 既 然jQuery有区别但也有联系,那么jQuery对象与DOM对象也可以相互转换。在两者转换前首先我们给一个约定:如果一个获取的是jQuery对 象,那么我们在变量前面加上$,如:var $variab = jQuery对象;如果获取的是DOM对象,则与习惯普通一样:var variab = DOM对象;这么约定只是便于讲解与区别,实际使用中并不规定。

    jQuery对象转成DOM对象

    **两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index); (1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。 如:var $v =$("#v") ; //jQuery对象 var v=$v[0]; //DOM对象 alert(v.checked) //检测这个checkbox是否被选中 (2)jQuery本身提供,通过.get(index)方法,得到相应的DOM对象 如:var $v=$("#v"); //jQuery对象 var v=$v.get(0); //DOM对象 alert(v.checked) //检测这个checkbox是否被选中

    DOM对象转成jQuery对象

    对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。$(DOM对象) 如:var v=document.getElementById("v"); //DOM对象 var $v=$(v); //jQuery对象 转换后,就可以任意使用jQuery的方法了。 通过以上方法,可以任意的相互转换jQuery对象和DOM对象。需要再强调注意的是:DOM对象才能使用DOM中的方法,jQuery对象是不可以用DOM中的方法。

    其它的相关使用方法

    1、DOM对象转jQuery对象

    普通的Dom对象一般可以通过$()转换成jQuery对象。

    如:$(document.getElementById("msg")) 返回的就是jQuery对象,可以使用jQuery的方法。

    2、jQuery对象转DOM对象

    由于jQuery对象本身是一个集合。所以如果jQuery对象要转换为Dom对象则必须取出其中的某一项,一般可通过索引取出。 如: $("#msg")[0],$("div").eq(1)[0],$("div").get()[1],$("td")[5]

    这些都是Dom对象,可以使用Dom中的方法,但不能再使用jQuery的方法。

    以下几种写法都是正确的: $("#msg").html(); $("#msg")[0].innerHTML; $("#msg").eq(0)[0].innerHTML; $("#msg").get(0).innerHTML;

    3、两种方法获取对象方式:

    如有

      document.getElementById('formid');

      $('#formid')

      document.getElementsByName('formName')[0]

      $("form[name='formName']")

    img

    文章来源

     

    JQuery实例

    表格奇偶行变色

     

    二级菜单联动

    html:

    js:

    倒计时60秒

     

    自定义弹出页面框(带遮罩层)

     

     

     

     

    ===========================END=========================

     

     

     

     

     

    正则表达式

    一、通用规则

    1.语法

    字符描述
    \将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。
    ^匹配输入字符串的开始位置;除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。要匹配 ^ 字符本身,请使用 \^。
    $匹配输入字符串的结束位置。
    *匹配前面的子表达式零次或多次。
    +匹配前面的子表达式一次或多次。
    ?匹配前面的子表达式零次或一次。等价于 {0,1}。指明一个非贪婪限定符
    .匹配除换行符“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像"(.|\n)”的模式。
    {n}n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
    {n,}n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o”。
    {n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。请注意在逗号和两个数之间不能有空格。'o{0,1}' 等价于 'o?'。
    |指明两项之间的一个选择。
    ( )标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。
    \n匹配一个换行符。等价于 \x0a 和 \cJ。
    \r匹配一个回车符。等价于 \x0d 和 \cM。
    \t匹配一个制表符。等价于 \x09 和 \cI。
    \v匹配一个垂直制表符。等价于 \x0b 和 \cK。
    \f匹配一个换页符。等价于 \x0c 和 \cL。
    \d匹配一个数字字符。等价于 [0-9]
    \D匹配一个非数字字符。等价于 [^0-9]
    \w匹配字母、数字、下划线。等价于[A-Za-z0-9_]
    \W匹配非字母、数字、下划线。等价于 [^A-Za-z0-9_]
    \s匹配任何空白字符,包括空格、制表符、换行符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
    \S匹配任何非空白字符。等价于 “[^ \f\n\r\t\v]”。
    (pattern)匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '(' 或 ')'。
    (?:pattern)匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
    (?=pattern)正向肯定预查(look ahead positive assert),在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,"Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
    (?!pattern)正向否定预查(negative assert),在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
    修饰符描述
    iignore - 不区分大小写
    gglobal - 全局匹配;查找所有的匹配项
    mmulti line - 多行匹配

    2.常用正则

    匹配空行/^\s*$/
    中文字符[\u4e00-\u9fa5]
    必须同时包含字符和数字和特殊字符,可用于密码验证^(?=.*\d)(?=.*[a-zA-Z])(?=.[!@#$%^&?=+_])(.{8,18})$
    匹配 HTML 标记/<\s(\S+)(\s[^>])?>[\s\S]<\s\/\1\s*>/
      

     

    二、JS

    1. match

    格式:stringObj.match(rgExp)

    stringObj为字符串必选 ;rgExp为正则表达式必选项。

    返回值:如果能匹配则返回结果数组,如果不能匹配返回null。

    我们必须明确的是,这个方法跟其他语言是不同的。

    全局标示g

    当有g时,匹配整个字符串;当无g时,匹配首次的子符串。 var reg = / 正则表达式 /g

    2. test

    test() 方法用于检测一个字符串是否匹配某个模式.

    语法:RegExpObject.test(string)

    返回值:如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 false。

     

    三、Python

    1. match、search、findall用法区别

    1. match:从字符串首字母开始匹配,如果匹配成功,则返回Match对象,反之返回空。若想获取返回Match对象转为值,则用group()方法。
    2. search:从这个整个字符串匹配,如果匹配成功,则返回Match对象,反之返回空。若想获取返回Match对象转为值,则用group()方法。
    3. findall:匹配所有的字符串,返回的是list。

    结果

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    ===================================END=====================================

     

     

     

     

     

    Flex布局

    一、概要图

    flex布局

     

    注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

    二、容器属性

    1.flex-direction属性*

    flex-direction属性决定主轴的方向(即项目的排列方向)。

    2.flex-wrap属性*

    默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

    3.flex-flow属性

    flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

    4.justify-content属性*

    justify-content属性定义了项目在主轴上的对齐方式。

     

    5. align-items属性*

    align-items属性定义项目在交叉轴(副轴/侧轴)上如何对齐。

    6.align-content属性

    align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

    三、项目属性

    1. order属性

    order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

    2. flex-grow属性

    flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

    如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

    3. flex-shrink属性

    flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

    如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。负值对该属性无效。

    4. flex-basis属性

    flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

    5. flex属性

    flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

    6.align-self属性

    align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

     

    Mock.js模拟后台数据

    一、在VUE3中使用

    第1步,在项目的根目录vue.config.js中写入

    第2步,新建mymock/index.js文件

    第3步,vue中使用

     

     

     

    详细情况如下

    1. 创建项目vue-cli

    2. 进入项目mock-demo

    3. 新建mymock/testMock.js

      可以在终端中输入查看:node testmock.js

    4. 安装依赖

    5. 新建mymock/userInfo.json5

      安装json5之后才可以使用注释,否则注释报错!

    6. 新建mymock/testJSON5.js

     

     

     

    二、在jQuery中使用

    1. 在html文件中,引入jquery.js和mock.js

    2. 新建mymock/index.js文件(自定义的模拟数据)

    3. 引入自定义的index.js文件

    4. 发送ajax请求