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 相关文章推荐
网站页面自动跳转实现方法PHP、JSP(下)
Aug 01 Javascript
js倒计时小程序
Nov 05 Javascript
javascript:void(0)的问题使用探讨
Apr 10 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
Jun 20 Javascript
vuejs 制作背景淡入淡出切换动画的实例
Sep 01 Javascript
解决vue同一slot在组件中渲染多次的问题
Sep 06 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
Sep 19 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 Javascript
5分钟快速看懂ES6中的反射与代理
Dec 19 Javascript
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
5种方法告诉你如何使JavaScript 代码库更干净
Sep 15 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自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
2013/08/27 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
JavaScript操作表单实例讲解(上)
2016/06/20 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
jQ处理xml文件和xml字符串的方法(详解)
2016/11/22 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
jQuery实现web页面樱花坠落的特效
2017/06/01 jQuery
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
美国户外生活方式品牌:Eddie Bauer
2016/12/28 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
Java语言程序设计测试题判断题部分
2013/01/06 面试题
新学期开学寄语
2014/01/18 职场文书
广告学毕业生求职信
2014/01/30 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
升学宴答谢词
2015/01/05 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
道德与公民自我评价
2015/03/09 职场文书
2015年教师节慰问信
2015/03/23 职场文书
创卫工作总结2015
2015/04/22 职场文书