在JavaScript中可以通过BOM查询html文档中的元素,也就是所谓的在html中获取对象然后对它添加一个函数。...,就晓得有点麻烦,代码量也有点大,所以这个时候我们就需要将查询函数封装成一个函数。...比如如下所示: html结构: 传递的参数如下: var atrr = $(".box .box1 .div1 span"); 然后就是封装函数了。...("html");//获取最外层的dom元素 for(var i = 0,len = strs.length;i<len;i++){//根据传过来的字符串,一层一层的遍历查找dom...{//如果是class,则返回的是一个伪数组(集合),需要加一个下标,才能获得dom result = byClass(strs[i].slice(1),result[0]);
...
DOM DOM文档对象模型 又称为DOM树 DOM树 由文档、元素、节点 组成 文档:一个页面就是一个文档,元素:文档中的所有标签都称为元素。...DOM中使用Element表示节点:文档中的所有内容,在文档中都是节点(标签、属性、文本注释等)DOM中使用node表示 获取元素 都以 document ....,IE9以上支持 我是div 我是span 问:解决兼容性问题 答:自己封装一个兼容性的函数 function getNextElementSibling(element) { var...、checked 、selected 、disabled 获取属性的值 元素对象.属性名 设置属性的值 元素对象.属性名=值 按钮 样式属性操作 通过 js 修改元素大小,...//在父节点的末尾添加节点insertBefore //可以指定子节点的添加位置 删除 removeChild 改 主要修改DOM元素的属性,DOM元素的内容,属性,表单的值等。
前言 这几天在恶(xue)补(xi)node.js,其中老师讲到了ajax,以前学习js都是东一点、西一点。不系统,当然,原因也很多。...当时一些js基础知识也欠缺(虽然现在也不咋的),想要自己封装,难度也很大。 今天也终于自己封装一个简易 的ajax。...viewport" content="width=device-width, initial-scale=1.0"> Title <script src="ajax.<em>js</em>...success: function (res) { console.log(res); }, dataType: 'json' }) 压缩文件下载:ajax.min.<em>js</em>
用原生 JS 封装一个动画插件。效果如下: ? 这个飞驰的小球看起来是不是特有灵性呢?没错,它就是用原生JS实现的。 接下来,就让我们深入细节,体会其中的奥秘。...一、需求分析 封装一个插件,将小球的 DOM 对象作为参数传入,使得小球在鼠标按下和放开后能够运动,在水平方向做匀减速直线运动,初速度为鼠标移开瞬间的速度,在竖直方向的运动类似于自由落体运动。...JS 代码,采用 ES6 语法 //drag.jsclass Drag { //ele为传入的DOM对象 constructor(ele) { //初始化参数...JS 手写一下简单的发布-订阅,让我们原生撸到底 //subscribe.jsclass Subscribe { constructor() { //创建容器 this.pond...回过头看,比如 DOM2 的事件池机制,vue 的生命周期钩子等等,你就会明白它们为什么要这么设计,原理上和这次封装没有区别,这样一想,很多东西就更加清楚了。
老铁们,还记得如何对原生ajax进行封装吗?注释较少,看看是否还能看的明白?...封装如下: function ajax(obj){ //指定提交方式的默认值 obj.type = obj.type || "get"; //设置是否异步,默认为true(异步)...obj.async = obj.async || true; //设置数据的默认值 obj.data = obj.data || null; var params=_params...new Date()).getTime()+Math.random()); if(obj.type.toLowerCase()=="get" && params.length>0){//将转换后的data
分享内容介绍 通过原生js代码,实现粒子爆炸效果组件 组件开发过程中,使用到了公司内部十分高效的工程化环境,特此打个广告:新浪移动诚招各种技术大大!可以私聊投简历哦! 效果预览 ?...,且自定义功能难设计,屏幕适配也有一定成本` js做dom创建,生成随机css @keyframes `可行,但是创建style样式表,引发css重新渲染页面,会导致页面的性能下降,且抛物线css的复杂度不低...,暂不作为首选` js 刷帧 做dom渲染 `可行,但是刷帧操作会造成性能压力` 结论 canvas虽说可行,但由于其开发弊端 本次分享不以canvas为分享内容,而是使用最后一种 js刷帧的dom操作...,作为粒子的管控组件 所以:此功能可使用两个模块进行开发:partical.js 粒子功能 与 boom.js 粒子管理 实现 Partical.js 1....前置资源:抛物线运动的物理曲线需要使用Tween.js提供的速度函数 若不想引入Tween.js 可以使用以下代码 /** Tween.js* t: current time(当前时间);* b: beginning
一、Ajax的实现主要分为四部分: 1、创建Ajax对象 1 // 创建ajax对象 2 var xhr = null; 3 if(window.XMLHttpRequest){ 4 xhr =...1 // 处理返回数据 2 /* 3 ** 每当readyState改变时,就会触发onreadystatechange事件 4 ** readyState属性存储有XMLHttpRequest的状态信息...if(failed){ 25 failed(xhr.status); 26 } 27 } 28 } 29 } 二、Ajax封装函数
js一个非常重要的作用就是对dom进行操作,所谓的dom,可以理解为html代码里的一个个节点。比如,body标签元素就是一个dom。本文对js的dom操作进行一些总结。...按照惯例,先上一个刚写好的小例子,代码在最后给出: ? 1.gif 现在,来看看js对dom的一些操作吧。...1.最简单的dom方法封装 在本系列中,假设我们不考虑用jQuery。 现在给第三个盒子添加一个id。...= i; return false; } }); return index; }; 我学习js的路线就是如此,先想尽办法把功能实现了,然后才开始封装成方法...封装的好处不言而喻,没有人喜欢每次用到这个功能的时候,就去把实现代码拷贝一份吧。 3.如何获取parent下面指定class的元素列表?
以下文章来源于程序员成长指北 ,作者_release 专注 Node.js 技术栈分享,从 前端 到 Node.js 再到 后端数据库,祝您成为优秀的高级 Node.js 全栈工程师。...座右铭:今天未完成的,明天更不会完成 前言 闲着没事,就想着写写原生js玩玩,在网上看了几个效果后决定做这个效果,并且使用了prototype和eventEmitter封装成了库。...dom元素和完成的回调事件。...和默认的defaultOption进行合并 编写核心函数1(创建dom和css) proto.createSlider = function () { this.options.el.innerHTML...return false;" unselectable="on">拖动滑块验证';//像指定元素中放置插件的dom
群里小伙伴投稿 作者:_release 原文地址:https://juejin.im/post/5ed37a73e51d45788c739784 前言 闲着没事,就想着写写原生js玩玩,在网上看了几个效果后决定做这个效果...,并且使用了prototype和eventEmitter封装成了库。...分析 看到这个效果我们首先应该想到和拖动有关的api: onmousedown, onmousemove, onmouseup 其次要支持用户传入放置这个组件的dom元素和完成的回调事件。...和默认的defaultOption进行合并 编写核心函数1(创建dom和css) proto.createSlider = function () { this.options.el.innerHTML...return false;" unselectable="on">拖动滑块验证';//像指定元素中放置插件的dom
arguments.callee,func.caller,变量赋值前必须声 明,局部this必须被赋值 (Person.call(null/undefined) 赋值什么就是什么),拒绝重复属性和参数 复制代码 DOM...什么是DOM 1.DOM — > Document Object Model 2.DOM定义了表示和修改文档所需的方法。...DOM对象即为宿主对象, 由浏览器厂商定义,用来操作html和xml功能的一类对象的集合。 也有人称DOM是对HTML以及XML的标准编程接口。...复制代码 DOM基本操作 1.对节点的增删改查 查看元素节点 document代表整个文档 document.getElementById() //元素id 在Ie8以下的浏览器, 不区分id大小写,而且也返回匹配...ie7以下的版本中没有,非实时 .querySelectorAll() // css选择器 在ie7和ie7以下的版本中没有,非实时 复制代码 DOM基本操作 遍历节点树: parentNode ->
context.querySelector/context.querySelectorAll ie6~8不兼容 通过这个获取到的节点集合不存在dom映射 2、描述节点和节点之间关系的属性(在标准浏览器中会把空格和换行当做文本节点处理...使用惰性思想来封装我的常用方法库:第一次在给utils赋值的时候我们就已经把兼容处理好了,把处理的结果存放在flag变量中,以后在每一个方法中,只要是ie6~8不兼容的,我们不需要重新检测,只需要使用flag...arr[arr.length] = likeArray[i]; } return arr; } })(); 以下的Dom...库封装utils 方法库完成了这些功能 1.获取某一个容器中所有元素子节点(还可以筛选出指定签名的)(function children) 2.获取上一个哥哥元素节点(prev)、获取下一个弟弟元素节点...方法 11.getcss 12.setcss 13.getGroupCss Dom库封装utils 方法库 var utils = (function () { var flag = "getComputedStyle
前言 抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉挺可行的。。。...简单说说思路,有兴趣的可以自己跟着写一个,顺便熟悉一下原生的Ajax......同域发送请求 GET请求 最常见的请求类型,常用于查询某些信息。通过将查询的字符串参数追加到URL的末尾来将信息发送给服务器。...get方法请求需要注意的是,查询字符串中的每个参数名称和值都必须使用encodeURIComponent()进行编码,而且所有名-值对都必须由&号分割。...主要原理是利用了script 标签可以跨域请求的特点,由其 src 属性发送请求到服务器,服务器返回 JS 代码,网页端接受响应,然后就直接执行了,这和通过 script 标签引用外部文件的原理是一样的
需求分析 1.能够根据价格搜索出对应的商品; 2.能够根据商品名称查询出对应商品; 实现效果 1. 2....//当我们点击了按钮,就可以根据我们的商品价格去筛选数组里面的对象 //搜索按钮 search_price.addEventListener('click',function(){...//如果查询数组中唯一的元素,用some方法更合适,因为找到这个元素,就不在进行循环,效率更高 search_name.addEventListener('click',function(...); arr.push(value); return true;//用some()后面只能写true和false } }); //把拿到的数据渲染到页面中...setDate(arr) }) 主要用到的方法 forEach()、filter()和some()方法 注意: 如果查询数组中唯一的元素,用some方法更合适
本文是深入浅出 ahooks 源码系列文章的第十五篇,这个系列的目标主要有以下几点: 加深对 React hooks 的理解。 学习如何抽象自定义 hooks。...构建属于自己的 React hooks 工具库。 培养阅读学习源码的习惯,工具库是一个对源码阅读不错的选择。 本篇接着针对关于 DOM 的各个 Hook 封装进行解读。...useFullscreen 管理 DOM 全屏的 Hook。 该 hook 主要是依赖 screenfull[1] 这个 npm 包进行实现的。...来看该 hook 的封装: 首先是 onChange 事件中,判断是否是全屏,从而触发进入全屏的函数或者退出全屏的函数。当退出全屏的时候,卸载 change 事件。...() => { if (state) { exitFullscreen(); } else { enterFullscreen(); } }; useHover 监听 DOM
上一篇我们探讨了 ahooks 对 DOM 类 Hooks 使用规范,以及源码中是如何去做处理的。接下来我们就针对关于 DOM 的各个 Hook 封装进行解读。...(某个 DOM 元素) 的引用,判断假如不在传入的 target 列表中,则触发定义好的 onClickAway 函数。...target : [target]; if ( // 判断点击的 DOM Target 是否在定义的 DOM 元素(列表)中 targets.some((item) => {...,通过 document 监听事件,判断触发事件的 DOM 元素是否在 target 列表中,从而决定是否要触发定义好的函数。...useEventTarget 常见表单控件(通过 e.target.value 获取表单值) 的 onChange 跟 value 逻辑封装,支持自定义值转换和重置功能。
简单介绍一下DOM DOM (Document Object Model) 译为文档对象模型,是 HTML 和 XML 文档的编程接口。...也就是说把文档编译成了一个对象模型,例如我们写的html文件实际上是一个文档文件,通过我们的浏览器把它编译成了一个对象模型,这个模型就是document对象。 DOM 以树结构表达 HTML 文档。...简单讲,innerHTML可以在某种特定环境下重构某个元素节点的DOM结构,而innerText只能修改文本值 总结 原生的DOM节点操作还是非常简单实用的,除了单词长了一点以外好像也没有什么明显的缺点...,当然当我们刚开始使用DOM节点操作的时候,还是会遇到一些坑的。...把这里搞清楚剩下的就是靠大家的细心了,有一些操作是针对父级节点的,例如node.appendChild(),还有很多,一定要分清楚父级节点和子级节点的关系,才能玩转DOM节点操作。
bug总结: 封装的库根本找不到,颜色都是灰的,说明代码是错的,通过在js中添加了一个var eventUill = {},建立了一个对象,html这里调用对象的addHander, eventUill...onload=function(所有的js代码)调用id的代码写到html的下边。这也是js习惯上要放到body的后边的理由。...以下是测试时的html文件,DOM2级事件-跨浏览器处理.js就是上面的js源码。 dom2级事件跨浏览器处理-封装库 <script
领取专属 10元无门槛券
手把手带您无忧上云