JavaScript常用API总结

原创 2016-10-02 story JavaScript

下面是我整理的一些JavaScript常用的API清单。

目录

  1. 元素查找

  2. class操作

  3. 节点操作

  4. 属性操作

  5. 内容操作

  6. css操作

  7. 位置大小

  8. 事件

  9. DOM加载完毕

  10. 绑定上下文

  11. 去除空格

  12. Ajax

  13. JSON处理

  14. 节点遍历

元素查找

// Node

document.getElementById(id) // document.getElementById('test')

document.querySelector(selectors) // document.querySelector('#test div')

document.doctype

document.documentElement

document.head

document.title

document.body

 

// NodeList

document.getElementsByClassName(names) // document.getElementsByClassName('test')

document.getElementsByName(name) // document.getElementsByName('demo')

document.getElementsByTagName(name) // document.getElementsByTagName('div')

document.getElementsByTagNameNS(namespace, name) // document.getElementsByTagNameNS('http://www.w3.org/1999/xhtml', 'div')

document.querySelectorAll(selectors) // document.querySelectorAll('#test div')

document.links

document.scripts

document.images

document.embeds

document.forms

class操作

// ie8

// add class

el.className += ' ' + className;

 

// has class

function hasClass(el,className){

 return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);

}

 

// toggle class

function toggleClass(el,className){

 var classes = el.className.split(' ');

 var existingIndex = -1;

 for (var i = classes.length; i--;) {

   if (classes[i] === className){

     existingIndex = i;

   }

 }

 if (existingIndex >= 0){

   classes.splice(existingIndex, 1);

 }

 else{

   classes.push(className);

 }

 el.className = classes.join(' ');

}

 

// remove class

function remove(el,className){

 el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');

}

 

// ie 10

el.classList.add(className); // add class

el.classList.remove(className); // remove class

el.classList.contains(className); // has class

el.classList.toggle(className); // toggle class

节点操作

// 创建

var el = document.createElement(name);

 

// 复制

el.cloneNode(true); // 默认为false(克隆节点及其后代), true(克隆节点及其属性,以及后代)

 

// 向节点添加最后一个子节点

parent.appendChild(el);

 

// 在指定子节点之前插入新的子节点

parent.insertBefore(el, parent.childNodes[0]);

 

// insertAdjacentHTML方法

el.insertAdjacentHTML(where, htmlString);

el.insertAdjacentHTML('beforeBegin', htmlString); // 在该元素前插入

el.insertAdjacentHTML('afterBegin', htmlString); // 在该元素第一个子元素前插入

el.insertAdjacentHTML('beforeEnd', htmlString); // 在该元素最后一个子元素后面插入

el.insertAdjacentHTML('afterEnd', htmlString); // 在该元素后插入

 

// 父元素

el.parentNode

 

// 删除节点

el.parentNode.removeChild(el);

 

// 兄弟节点 ie9+

var siblings = Array.prototype.filter.call(el.parentNode.children, function(child){

 return child !== el;

})

 

// 下一个兄弟节点

// ie8

function nextElementSibling(el) {

 do { el = el.nextSibling; } while ( el && el.nodeType !== 1 );

 return el;

}

nextElementSibling(el);

// ie9+

el.nextElementSibling;

 

// 上一个兄弟节点

// ie8

function previousElementSibling(el) {

 do {

   el = el.previousSibling;

 }

 while ( el && el.nodeType !== 1 );

 return el;

}

previousElementSibling(el);

// ie9+

el.previousElementSibling;

 

// Children

// ie8

var children = [];

for (var i = el.children.length; i--;) {

 // Skip comment nodes on IE8

 if (el.children[i].nodeType != 8)

   children.unshift(el.children[i]);

}

// ie9+

el.children

属性操作

// 获取属性值

el.getAttribute('alt');

 

// 设置属性值

el.setAttribute('alt', '图片描述');

内容操作

// 获取元素内容

el.innerHTML

// 设置元素内容

el.innerHTML = string

// 获取元素内容(包含元素自身)

el.outerHTML

// 设置元素内容(包含元素自身)

el.outerHTML = string

 

// 获取文本内容

// ie8

el.innerText

// ie9+

el.textContent

// 设置文本内容

// ie8

el.innerText = string

// ie9+

el.textContent = string

CSS操作

// 获取css样式

// ie8

el.currentStyle[attrName]

// ie9+

window.getComputedStyle(el)[attrName]

// 伪类

window.getComputedStyle(el , ":after")[attrName];

 

// 设置CSS样式

el.style.display = 'none';

位置大小

// getBoundingClientRect返回一个对象,包含top,left,right,bottom,width,height

// width、height 元素自身宽高

// top 元素上外边界距窗口最上面的距离

// right 元素右外边界距窗口最上面的距离

// bottom 元素下外边界距窗口最上面的距离

// left 元素左外边界距窗口最上面的距离

// width 元素自身宽(包含border,padding)

// height 元素自身高(包含border,padding)

 

// 元素在页面上的偏移量

var rect = el.getBoundingClientRect()

return {

 top: rect.top + document.body.scrollTop,

 left: rect.left + document.body.scrollLeft

}

 

// 元素自身宽(包含border,padding)

el.offsetWidth

// 元素自身高(包含border,padding)

el.offsetHeight

// 元素的左外边框至包含元素的左内边框之间的像素距离

el.offsetLeft

// 元素的上外边框至包含元素的上内边框之间的像素距离

el.offsetTop

 

//通常认为 <html> 元素是在 Web 浏览器的视口中滚动的元素(IE6 之前版本运行在混杂模式下时是 <body> 元素)

//因此,带有垂直滚动条的页面总高度就是 document.documentElement.scrollHeight

// 在没有滚动条的情况下,元素内容的总高度

scrollHeight

// 在没有滚动条的情况下,元素内容的总宽度

scrollWidth

// 被隐藏在内容区域左侧的像素数。通过设置这个属性可以改变元素的滚动位置

scrollLeft

// 被隐藏在内容区域上方的像素数。通过设置这个属性可以改变元素的滚动位置

scrollTop

 

// 视口大小

// ie9+

var pageWidth = window.innerWidth,

   pageHeight = window.innerHeight;

if (typeof pageWidth != "number"){

 // ie8

 if (document.compatMode == "CSS1Compat"){

   pageWidth = document.documentElement.clientWidth;

   pageHeight = document.documentElement.clientHeight;

 } else {

   // ie6混杂模式

   pageWidth = document.body.clientWidth;

   pageHeight = document.body.clientHeight;

 }

}

事件

// 绑定事件

// ie9+

el.addEventListener(eventName, handler , Booleans); // Booleans默认false(事件在冒泡阶段执行),true(事件在捕获阶段执行)

// ie8

el.attachEvent('on' + eventName, function(){

 handler.call(el);

});

 

// 移除事件

// ie9+

el.removeEventListener(eventName, handler);

// ie8

el.detachEvent('on' + eventName, handler);

 

// 事件触发

if (document.createEvent) {

 // ie9+

 var event = document.createEvent('HTMLEvents');

 event.initEvent('change', true, false);

 el.dispatchEvent(event);

} else {

 // ie8

 el.fireEvent('onchange');

}

 

// event对象

var event = window.event||event;

 

// 事件的目标节点

var target = event.target || event.srcElement;

 

// 事件代理

ul.addEventListener('click', function(event) {

 if (event.target.tagName.toLowerCase() === 'li') {

   console.log(event.target.innerHTML)

 }

});

DOM加载完毕

function ready(fn) {

 if (document.readyState != 'loading'){

   // ie9+

   document.addEventListener('DOMContentLoaded', fn);

 } else {

   // ie8

   document.attachEvent('onreadystatechange', function() {

     if (document.readyState != 'loading'){

       fn();

     }

   });

 }

}

绑定上下文

// ie8

fn.apply(context, arguments);

// ie9+

fn.bind(context);

去除空格

// ie8

string.replace(/^\s+|\s+$/g, '');

// ie9+

string.trim();

ajax

// GET

var request = new XMLHttpRequest();

request.open('GET', 'user.php?fname=Bill&lname=Gates', true); // false(同步)

request.send();

 

// ie8

request.onreadystatechange = function() {

 if (this.readyState === 4) {

   if (this.status >= 200 && this.status < 400) {

     // Success!

     var data = JSON.parse(this.responseText);

   } else {

     // 错误

   }

 }

};

 

// ie9+

request.onload = function() {

 if (request.status >= 200 && request.status < 400) {

   // Success!

   var data = JSON.parse(request.responseText);

 } else {

   // 服务器返回出错

 }

};

request.onerror = function() {

 // 连接错误

};

 

// POST

var request = new XMLHttpRequest();

request.open('POST', 'user.php', true); // false(同步)

request.setRequestHeader("Content-type","application/x-www-form-urlencoded");

request.send(dataString);

JSON处理

JSON.parse(string);

JSON.String(Object)

节点遍历

function forEach( nodeList, callback ) {

 if(Array.prototype.forEach){

   // ie9+

   Array.prototype.forEach.call( nodeList, callback );

 }else {

   // ie8

   for (var i = 0; i < nodeList.length; i++){

     callback(nodeList[i], i);

   }

 }

}

 

forEach(document.querySelectorAll(selector),function(el, i){

 

})

 

js的常用api的更多相关文章

  1. Node.js——fs常用API

    文件状态 文件删除 文件信息 读取文件夹 文件的截取 创建文件夹 删除目录 文件监视,可以设置监视频率 文件重命名,可以用来剪切文件 注意 fs.open() fs.close() 这是最原始的读写方 ...

  2. js数组常用api

    数组创建 第一种,使用 Array 构造函数: var arr1 = new Array(); //创建一个空数组 var arr2 = new Array(10); // 创建一个包含10项的数组 ...

  3. node.js整理 02文件操作-常用API

    NodeJS不仅能做网络编程,而且能够操作文件. 拷贝 小文件拷贝 var fs = require('fs'); function copy(src, dst) { fs.writeFileSync ...

  4. JS操作DOM常用API总结

    <JS高程>中的DOM部分写的有些繁琐,还没勇气整理,直到看到了这篇博文 Javascript操作DOM常用API总结,顿时有了一种居高临下,一览全局的感觉.不过有时间还是得自己把书里面的 ...

  5. immutable.js 在React、Redux中的实践以及常用API简介

    immutable.js 在React.Redux中的实践以及常用API简介 学习下 这个immutable Data 是什么鬼,有什么优点,好处等等 mark :  https://yq.aliyu ...

  6. Javascript操作DOM常用API总结

    基本概念 在讲解操作DOM的api之前,首先我们来复习一下一些基本概念,这些概念是掌握api的关键,必须理解它们. Node类型 DOM1级定义了一个Node接口,该接口由DOM中所有节点类型实现.这 ...

  7. JavaScript 操作 DOM 常用 API 总结

    文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前, ...

  8. Express ( MiddleWare/中间件 路由 在 Express 中使用模板引擎 常用API

    A fast, un-opinionated, minimalist web framework for Node.js applications. In general, prefer simply ...

  9. 常用API接口汇总

    下面列举了100多个国内常用API接口,并按照 笔记.出行.词典.电商.地图.电影.即时通讯.开发者网站.快递查询.旅游.社交.视频.天气.团队协作.图片与图像处理.外卖.消息推送.音乐.云.语义识别 ...

随机推荐

  1. LeetCode Patching Array

    原题链接在这里:https://leetcode.com/problems/patching-array/ 题目: Given a sorted positive integer array nums ...

  2. mysql数据库、表、字段、记录:增、删、改、查

    /* 结构:数据库.表.字段.记录 操作:增删改查 */ -- 1.数据库:增删改查 create datebase if not exists jkxy; drop database if exis ...

  3. 【Android测试】【第十二节】Uiautomator——API详解

    ◆版权声明:本文出自carter_dream的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4921701.html 简单的例子 以一个 ...

  4. centos7下快速安装mysql

    CentOS 7的yum源中貌似没有正常安装MySQL时的mysql-sever文件,需要去官网上下载 # wget http://dev.mysql.com/get/mysql-community- ...

  5. tesseract ocr文字识别Android实例程序和训练工具全部源代码

    tesseract ocr是一个开源的文字识别引擎,Android系统中也可以使用.可以识别50多种语言,通过自己训练识别库的方式,可以大大提高识别的准确率. 为了节省大家的学习时间,现将自己近期的学 ...

  6. 【转】Web性能压力测试工具之ApacheBench(ab)详解

    PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网 ...

  7. pod install出现[!] /bin/bash -c错误,Installing Realm报错

    pod install出现错误,具体错误信息如下: Installing Realm () [!] /bin/bash -c set -e sh build.sh cocoapods-setup co ...

  8. WEB语言转义总结

    后台字符串嵌入前台语言输出   web语言分为后台和前台,如果后台语言嵌入方式将字符串输出到前台语言中,需要按照前台语言的要求进行转义. 因为前台各个语言都有自身的保留字符, 用于规定自身的语法格式, ...

  9. AngularJS Best Practices: SEO

    Google can execute AJAX & JavaScript for indexing, you can read the below link for more detailed ...

  10. C++之路进阶——bzoj3876(支线剧情)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  hyxzc Logout 捐赠本站 Notice:由于本OJ建立在 ...