JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支


Posted in Javascript onJuly 04, 2019

本文实例讲述了JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支。分享给大家供大家参考,具体如下:

页面加载事件的比较

  • window.onload
  • jquery 中的 document.ready
document.ready = function (callback) {
  // 兼容FF,Google
  if (document.addEventListener) {
    document.addEventListener('DOMContentLoaded', function () {
      document.removeEventListener('DOMContentLoaded', arguments.callee, false);
      callback();
    }, false)
  }
  // 兼容IE
  else if (document.attachEvent) {
    document.attachEvent('onreadystatechange', function () {
       if (document.readyState == "complete") {
            document.detachEvent("onreadystatechange", arguments.callee);
            callback();
        }
    })
  }
  else if (document.lastChild == document.body) {
    callback();
  }
}
window.onload = function () {
  alert('onload'); // 后执行
};
document.ready(function () {
  alert('ready'); // 先执行
});
  • 内部实现细节如上

数组的常用操作方法

  • push 从后面追加一个或多个,返回新数组的长度
  • unshift 从前面追加一个或多个,返回新数组的长度
  • pop 删除最后一个元素,返回被删除的元素
  • shift 删除第一个元素,返回第一个被删除的元素
  • concat 连接数组,返回新的数组
  • join 将数组转字符串,参数是分隔符,默认是分隔符是逗号”,”
  • split 将字符串转换为数组,默认分割符是逗号 stringObject.split(separator,howmany), howmany 参数可指定返回的数组的最大长度

js 的构成

  • ECMAScript 描述了js语法和基本对象
  • DOM (文档对象模型) 提供了文档结构化表示,并定义了如何通过脚本来访问文档结构
  • BOM (浏览器对象模型) 提供与浏览器交互的方法和接口

dom 节点

  • 标签节点
  • 文字节点
  • 属性节点
  • 注释节点

获取节点的方式

document.getElementById(“id”)
document.getElementByTagName(“div”)
document.getElementsByClassName(“classname”) ie 678 不支持
document.querySelector(); // 返回第一个匹配的dom元素
document.querySelectorAll(); // 返回所有dom元素匹配的集合

获取浏览器是否支持的写法如下

if(document.querySelector){
 // do your business
}

节点的访问

父节点(唯一):

dom.parentNode

兄弟节点 (兼容写法):

// nextSibling 和 previousSibling 是IE的写法
var next = (dom.nextElementSibling) || (dom.nextSibling);
var pre = (dom.previousElementSibling) || (dom.previousSibling);

孩子节点 (兼容写法):

// firstChild, lastChild 是IE的写法
var first = father.firstElementChild || father.firstChild;
var last = father.lastElementChild || father.lastChild;

孩子们节点:childNodes 和 children

// childNodes 是w3c推荐使用, 但谷歌等浏览器把换行也看成一个节点
// 用下面的方式实现,比较麻烦
var demo = document.getElementById("demo");
var nodes = demo.childNodes;
for(var i=0;i<nodes.length;i++) {
 if(nodes[i].nodeType == 1) {
  nodes[i].style.display = "none";
 }
}
// children 在ie678里面包含注释节点, 注意在编码时避开使用注释
var demo = document.getElementById("demo");
var child = demo.children;
child[0].style.backgroundColor = "red";  // 第一个孩子
child[child.length-1].style.backgroundColor = "red";  // 最后一个孩子

dom 节点操作

创建节点:

var dom = document.createElement(“div”);

添加节点:

// appendChild 将dom追加到dom1的最后面
dom1.appendChild(dom) ;
// insertBefore 将newDom 插入到 ReferencedDom 的前面, 返回值为新插入的值, dom1 为父节点
dom1.insertBefore(newDom, ReferencedDom)

删除节点:

removeChild() eg: domA.removeChild(domB); // 删除domA里面的孩子节点domB

克隆节点: cloneNode 复制节点,接受一个布尔值,true表示深复制(复制节点及其内部所有节点), false 表示浅复制

// 深复制
demo.cloneNode(true);
// 浅复制
demo.cloneNode(false);

属性设定

非兼容ie6,7的写法
- 获取:dom.getAttribute(“属性”);
- 设置:dom.setAttribute(“属性”,”值”);
- 删除:dom.removeAttribute(“属性”);

兼容写法举例:
- 获取:var cn = dom.className
- 设置:dom.className = “dcl”
- 删除:dom.className = null;

特殊样式属性

cssText 用于更改多个样式属性设置

dom.style.cssText = "width:30px;height:10px;"

常用的循环

  • for
  • while
  • do while

switch 多分支语句

var str = "abc";
switch(str) {
 case "a"
  // ...
  break;
 case "b"
  // ...
  break;
 case "c"
  // ...
  break;
 case "abc"
  // ...
  break;
 default:
  // ...
}

更多关于JavaScript相关内容可查看本站专题:《JavaScript操作DOM技巧总结》、《JavaScript页面元素操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Javascript alert消息换行的方法
Aug 07 Javascript
JS实现图片横向滚动效果示例代码
Sep 04 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
Mar 19 Javascript
Angular2  NgModule 模块详解
Oct 19 Javascript
jsp 自动编译机制详细介绍
Dec 01 Javascript
轻松学习Javascript闭包
Mar 01 Javascript
Vue如何引入远程JS文件
Apr 20 Javascript
在vue中获取token,并将token写进header的方法
Sep 26 Javascript
JavaScript函数IIFE使用详解
Oct 21 Javascript
webpack4 optimization使用总结
Nov 10 Javascript
React中获取数据的3种方法及优缺点
Feb 18 Javascript
微信小程序自定义弹窗实现详解(可通用)
Jul 04 #Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 #Javascript
Vue.js递归组件实现组织架构树和选人功能
Jul 04 #Javascript
vue-cli配置flexible过程详解
Jul 04 #Javascript
vue动态配置模板 'component is'代码
Jul 04 #Javascript
react 移动端实现列表左滑删除的示例代码
Jul 04 #Javascript
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 #jQuery
You might like
php下保存远程图片到本地的办法
2010/08/08 PHP
解析php中curl_multi的应用
2013/07/17 PHP
通过Email发送PHP错误的方法
2015/07/20 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
2013/11/14 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
javascript arguments使用示例
2014/12/16 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
JavaScript设计模式经典之命令模式
2016/02/24 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
2017/12/18 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
Python实例一个类背后发生了什么
2016/02/09 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
查看django执行的sql语句及消耗时间的两种方法
2018/05/29 Python
python基于http下载视频或音频
2018/06/20 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
python实现高斯投影正反算方式
2020/01/17 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
新闻专业个人自我评价
2013/09/21 职场文书
新学期标语
2014/06/30 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
周末问候语大全
2015/11/10 职场文书
怎样写好演讲稿题目?
2019/08/21 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
关于MySQL中的 like操作符详情
2021/11/17 MySQL
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers