js原生

三种定义函数的方式

变量声明提升

在函数体内部,声明变量,会把该声明提升到函数体的最顶端。 只提升变量声明,不赋值

arguments

arguments是存储了函数传送过过来实参
Javascript在创建函数的同时,会在函数内部创建一个arguments对象实例.
arguments对象只有函数开始时才可用。函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同
arguments对象的长度是由实参个数而不是形参个数决定的

return 返回值

一个函数实际上就是一个计算过程,计算完成之后的结果就是返回值。
定义函数的返回值:
在函数内部用return来设置返回值,一个函数只能有一个返回值。
同时,终止代码的执行。
所有的自定义函数默认没有返回值;
Return 后面不要换行

getElementsByTagName() 获取某类标签

前面我们可以得到一个盒子 通过 id 获得
getElementById() 只得到一个 盒子
我们想要获取某类标签 比如说所有 的div li span
getElementsByTagName(); 很多个所以是复数 很多个
得到的是一个伪数组。

this 这个 自己的 指向的是 事件调用者

InnerHTML 属于盒子的内容 表单的内容 value

表单自动获得焦点 focus() 选择表单内容 select();

排他思想

数组常用用法

1,push() 后面推进去
console.log(arr.push(8)); 结果是 5 返回改数组的长度
2,unshift() 从数组的前面放入
3,pop() 删除最后一个元素
console.log(arr.pop()); 结果是 12 返回最后一个元素
4,shift() 删除第一个元素
5,concat() 连接两个数组

aa.concat(bb);

6,join() 把数组转换为字符串

arrayObject.join(separator)。参数 separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

7,split() 把字符串转换为数组

stringObject.split(separator,howmany)。参数 separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。
howmany 可选。该参数可指定返回的数组的最大长度

DOM节点

nodeType == 1 元素节点
nodeType == 2 属性节点
nodeType == 3 文本节点

DOM节点操作

1,创建节点
var div = document.creatElement(“li”);
2,插入节点

A. appendChild(); 添加孩子 append 添加的意思
意思: 添加孩子 放到盒子的 最后面。
B. insertBefore(插入的节点,参照节点) 子节点 添加孩子

写满两个参数
demo.insertBefore(test,childrens[0]);
放到了第一个孩子的前面
如果第二个参数 为 null 则 默认这新生成的盒子放到最后面。
demo.insertBefore(test,null);

3,移除节点
removeChild() 孩子节点
4,克隆节点
cloneNode();
括号里面可以跟参数 , 如果 里面是 true 深层复制, 除了复制本盒子,还复制子节点
如果为 false 浅层复制 只复制 本节点 不复制 子节点。
5,节点属性操作
getAttribute(属性) 获取属性
setAttribute(“属性”,”值”);
removeAttribute(“属性”);

内置对象

1, 日期函数 ( Date() )


2,定时器
window.setInterval(“执行的函数”,间隔时间)
关闭定时器 clearInterval(定时器名称); 定时器不再进行
setTimeout(“函数”, 时间 ) 隔多久执行一次函数

setInterval是排队执行的
假如 间隔时间是1秒, 而执行的程序的时间是2秒 上次还没执行完的代码会排队, 上一次执行完下一次的就立即执行, 这样实际执行的间隔时间为2秒
setTimeout延迟时间为1秒执行, 要执行的代码需要2秒来执行,那这段代码上一次与下一次的执行时间为3秒.

按钮不可用

btn.disabled = “disabled” || btn.disabled = true;
因为 button是个双标签 所以要更改他的值, 使用 innerHTML 的,不是value

转换为字符串

  1.     2+ “”  =  “2”  
    

2+”ab” = “2ab”

  1. String() 转换为字符串
  2. toString(基数) ; 基数就是进制
    var txt = 10;
    txt.toString(2) 二进制 1010

获取字符位置方法

charAt,获取相应位置字符(参数: 字符位置)
charCodeAt获取相应位置字符unicode编码(参数: 字符位置)
var txt = “abcedf”;
比如, txt.charAt(4); 索引号一定是从0开始 返回的结果是 d
我们根据我们输入的 位数 返回相应的 字符 。
unicode编码 是我们字符的字符的唯一表示 。

操作字符串

1, concat() 连接字符串
2, slice(“取字符串的起始位置”, [结束位置]) ; [] 可选的
slice(3) 从第3个开始取,一直取到最后
起始位置可以是负数 , 如果是负数,则是从 右边往左边开始取。
3,substr(起始位置,[取的个数])
substring 始终会把 小的值作为 起始位置 大的值作为结束位置

大小写转换

toUpperCase,转换为大写(参数: 无)
toLowerCase,转换为小写(参数:无)

offset家族

目的: js中有一套方便的获取元素尺寸的办法就是offset家族

offsetWidth offsetHeight

得到对象的宽度和高度(自己的,与他人无关)
offsetWidth = width + border + padding
div { width:220px; border-left:2px solid red; padding:10px;}
div.offsetWidth = 220 + 2 + 20
为什么不用 div.style.width 因为它只能得到行内的数值

offsetLeft offsetTop

就是子盒子到定位的父盒子边框到边框的距离(不包括border)

如果父级都没有定位则以body 为准
这里的父级指的是所有上一级 不仅仅指的是 父亲 还可以是 爷爷 曾爷爷 曾曾爷爷。。。。

offsetParent

返回改对象的父级 (带有定位) 不一定是亲的爸爸
前面学过一个返回父亲(亲的) parentNode 有所区别
如果当前元素的父级元素没有进行CSS定位(position为absolute或relative),offsetParent为body。
如果当前元素的父级元素中有CSS定位(position为absolute或relative),offsetParent取最近的那个父级元素。

offsetTop style.top 的区别

1、最大区别在于 offsetLeft 可以返回没有定位盒子的距离左侧的位置。 而 style.top 不可以 只有定位的盒子 才有 left top right
2、offsetTop 返回的是数字,而 style.top 返回的是字符串,除了数字外还带有单位:px。
style.left = 300px parseInt(300px) 结果 300
parseInt(style.left)+ parseInt(style.left)
3、offsetTop 只读,而 style.top 可读写。
4、如果没有给 HTML 元素指定过 top 样式,则 style.top 返回的是空字符串。
5、最重要的区别 style.left 只能得到 行内样式 ,offsetLeft 随便

事件对象

在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息。所有浏览器都支持event对象,但支持的方式不同。

常见属性
pageX clientX screenX 区别

screen X screenY
是以我们的电脑屏幕 为基准点 测量
pageX pageY
以我们的 文档 (绝对定位) 的基准点 对齐 ie678 不认识
clientX clientY
以 可视区域 为基准点 类似于 固定定位

常用事件

onmouseover onmouseout onclick

div.onmouseover 只触发一次
div.onmousemove 每移动一像素,就会触发一次
onmouseup 当鼠标弹起

onmousedown 当鼠标按下的时候

防止选择拖动

我们知道 按下鼠标然后拖拽可以选择文字 的。
清除选中的内容
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();

scroll家族

scrollTop 被卷去的头部
scrollLeft 被卷去的左部

怎么得到scrollTop

我们学习一个事件 : 页面滚动效果
window.onscroll = function() { 页面滚动语句 }
谷歌浏览器 和没有声明 DTD <DOCTYPE > : document.body.scrollTop;
火狐 和其他浏览器
document.documentElement.scrollTop;
ie9+ 和 最新浏览器 都认识
window.pageXOffset; pageYOffset (scrollTop)
兼容性写法:

var scrollTop = window.pageYOffset ||document.documentElement.scrollTop|| document.body.scrollTop || 0;

scrollTo(x,y)

window.scrollTo(15,15);
方法可把内容滚动到指定的坐标。
格式:scrollTo(xpos,ypos)

xpos 必需。要在窗口文档显示区左上角显示的文档的 x 坐标。
ypos必需。要在窗口文档显示区左上角显示的文档的 y 坐标

因为我们的网页大部分都没有水平滚动条,所以,这个x 不太常用。

client 家族

client 可视区域
clientWidth: width + padding 不包含border

window.onresize 改变窗口事件

阻止冒泡的方法

标准浏览器 和 ie浏览器
w3c的方法是event.stopPropagation()
IE则是使用event.cancelBubble = true

三个取整函数

这三个函数都是 数学函数
Math

  • Math.ceil() 向上取整 天花板
    比如说 console.log(Math.ceil(1.01)) 结果 是 2
    console.log(Math.ceil(1.9)) 结果 2
    console.log(Math.ceil(-1.3)) 结果 是 -1
  • Math.floor() 向下取整 地板
    比如说 console.log(Math.floor(1.01)) 结果 是 1
    console.log(Math.floor(1.9)) 结果 1
    console.log(Math.floor(-1.3)) 结果 是 -2
  • Math.round() 四舍五入函数
    console.log(Math.round(1.01)) 结果 是 1
    console.log(Math.round(1.9)) 结果 是 2

js 常用 访问 CSS 属性

我们访问得到css 属性,比较常用的有两种:

  1. 利用点语法
    box.style.width box.style.top
    点语法可以得到 width 属性 和 top属性 带有单位的。 100px
    但是这个语法有非常大的缺陷, 不变的。
    后面的width 和 top 没有办法传递参数的。
    var w = width;
    box.style.w

  2. 利用 [] 访问属性
    语法格式: box.style[“width”]
    元素.style[“属性”];
    console.log(box.style["left"]);

    最大的优点 : 可以给属性传递参数

得到css 样式

兼容写法


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

推荐阅读更多精彩内容

  • 我们首先要明白,我们给页面添加效果用到的js到底是什么?js其实包含三部分:dom 文档对象模型 bom 浏览...
    一直以来都很好阅读 792评论 0 0
  • 原文 https://www.kancloud.cn/dennis/tgjavascript/241852 一、节...
    LuckyS007阅读 841评论 0 0
  • js简介 Js是一种基于事件和对象驱动的解释性、松散性的语言。 一切皆对象 javascript 布兰登艾奇 ...
    塔库纳玛哈哈阅读 1,190评论 0 2
  • 王茹 午后金樱路旁的,学侣在那守候, 匆匆那年走过的,写在五行园口, 百草还要...
    南风知我意哒阅读 172评论 0 0
  • 心事在一笑中潜藏 任时光飞渡,拈一朵落花的香 熏染素洁衣裳 曾经的过往 渐渐湮没于暮色苍茫 我当遥望,你来时的方向...
    宁木紫菀阅读 551评论 1 7