位置: 编程技术 - 正文

JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)(js debounce实现)

编辑:rootadmin

推荐整理分享JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)(js debounce实现),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript代码运行,js代码运行,js代码如何运行,js代码怎么运行,js实现跑马灯,javascript怎么运行代码,js实现跑马灯,js debounce实现,内容如对您有帮助,希望把文章链接给更多的朋友!

最近做了个项目,其中有项目需求是要实现跑马灯抽奖效果,实现此功能主要用到js相关知识,废话不多说,感兴趣的朋友可以阅读下全文。

开始之前先来看上篇文章遗漏的两个问题和几个知识点,是自己重构的过程中需要用到的:

1.移动端1px像素线的问题

对于设计师给我的手机端网页的设计稿都是2倍图。按照道理来说,在写网页的时候,所有对象的实际尺寸都是会除2。但是对于1像素的线呢?

先来看两张图,设计稿的效果:

在三星 S4下的实际显示效果:

可以看到这个时候1px的线竟然显示不出来了。这个问题是跟 S4手机的屏幕像素密度有关。关于屏幕像素密度和1px 线的关系有很多文章介绍,可以自行搜索了解。我这里的解决方案是,对1px 的线不做处理。是多少就写多少。就算我的基础单位是rem,也不是其它单位。

2.pc 端浏览器和移动端浏览器容错率的差异

先来看一段代码:

很明显可以发现,我使用的选择器是有语法错误的。但是在浏览器中运行会有什么结果呢?看下图:

很明显可以看出对于属性选择器,就算我有语法错误,PC 端浏览器也是可以正确解析的。但是在手机端,这种写法是不能够正确解析,代码不能够运行。

所以写代码的时候一定要注意一些小细节哈。。。

3.jQuery中选择器的使用

在使用 jQuery 或者是 Zepto 的过程中最经常使用的选择器的写法就是下面这样吧,

只是在$() 中写上自己需要的 Dom 节点的 class或者 ID 或 者使用属性选择器。 在查看 jQuery的文档,对于$()会有这样的描述:

最重要的是看看对 context (它也是我们平时使用中最容易忽略,但是却非常有用的一个参数)的描述:

默认情况下, 如果没有指定context参数,$()将在当前的 HTML document中查找 DOM 元素;如果指定了 context 参数,如一个 DOM 元素集或 jQuery 对象,那就会在这个 context 中查找。在jQuery 1.3.2以后,其返回的元素顺序等同于在context中出现的先后顺序。

刚开始学习 JavaScript 那会儿,就听说了操作 DOM 是很损耗浏览器性能,遍历 DOM 也是很影响程序性能的。 如果我们在指定的范围内查找需要的 Dom 会不会比从整个document 中查找快很多。而且在我们写 web 组件的过程中,一个页面上组件可能出现很多次,那我们怎么判断我们要操作哪个组件呢?这个context参数就会起到决定行的作用。具体请继续看哇。。。

4.jQuery对象到数组的转换

刚开始学习 jQuery的时候在一本书上看到一句话:

jQuery对象就是一个 JavaScript 数组。

JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)(js debounce实现)

而且在使用 jQuery的过程中,都会遇到,js对象转 jQuery对象,jQuery对象转 js对象。关于这些基础不做过多介绍。 但是有时候我们会想在 jQuery对象上运用一些原生Array对象的方法或者属性。来看一个简单的例子:

由图中的代码运行结果,可以知道在 jQuery对象上是没有我们要使用reverse方法的。尽管test是一个数组。 那么我们怎么办才可以让 jQuery对象使用原生的 Array对象的方法呢?

4.1使用原型链扩展

比如下面的代码:

使用prototype来扩展方法的时候,大家一直比较认为是缺点的就是可能会污染已经存在的原型链上的方法。还有就是访问方法的时候需要查找原型链。

4.2将 jQuery对象中的对象添加到数组中

看下面的代码

这样就可以将 jQuery对象翻转。

4.3使用 Array对象的 from()方法

这种方法也是自己在编写插件过程中使用的方法。看一下文档描述:

Array.from() 方法可以将一个类数组对象或可迭代对象转换成真实的数组。个人感觉使用这个代码比较简洁。暂时还不知道有没有性能的影响。继续看下面的代码:

5.setInterval()和setTimeout()对程序性能的影响

因为setTimeout()和setInterval()这两个函数在 JavaScript 中的实现机制完全一样,这里只拿 setTimeout()验证

那么来看两段代码

输出结果如下:

看下面的代码输出是什么

运行这段代码的时候,代码报错

由以上的结果可以知道,当我们在使用setInterval()和setTimeout()的时候,在回掉中使用this的时候,this的作用域已经发生了改变,并且指向了 window。

setTimeout(fn,0)的含义是,指定某个任务在主线程最早可得的空闲时间执行,也就是说,尽可能早得执行。它在”任务队列”的尾部添加一个事件,因此要等到同步任务和”任务队列”现有的事件都处理完,才会得到执行。意思就是说在我们设置 setTimeout()之后,也可能不是立即等待多少秒之后就立即执行回掉,而是会等待主线程的任务都处理完后再执行,所以存在 “等待”超过自己设置时间的现象。同时也会存在异步队列中已经存在了其它的 setTimeout() 也是会等待之前的都执行完再执行当前的。

看一个 Demo:

如果运行上面的代码,当执行完 aaa() 等待一秒后并不会立即执行 ccc(),而是会等待 bbb() 执行完再执行 ccc() 这个时候离主线程运行结束已经4s 过去了。

以上内容是针对JavaScript实现跑马灯抽奖活动实例代码解析与优化(一),下篇继续给大家分享JavaScript实现跑马灯抽奖活动实例代码解析与优化(二),感兴趣的朋友敬请关注。

JavaScript实现跑马灯抽奖活动实例代码解析与优化(二) 在上篇文章给大家介绍了JavaScript实现跑马灯抽奖活动实例代码解析与优化(一),既然是要编写插件。那么叫做插件的东西肯定是具有的某些特征能够

js实现异步循环实现代码 问题实现异步循环时,你可能会遇到问题。让我们试着写一个异步方法,一次循环打印一次循环的索引值。scriptfor(vari=0;i5;i++){setTimeout(function(){document.wri

javascript每日必学之基础入门 从今天开始,我将带领新朋友们,从了解javascript开始,一步一步地进阶到大神境界,别的不废话,现在开始,我们就一点一点地从入门阶段开始。我们

标签: js debounce实现

本文链接地址:https://www.jiuchutong.com/biancheng/381671.html 转载请保留说明!

上一篇:javascript HTML+CSS实现经典橙色导航菜单

下一篇:js实现异步循环实现代码(js的异步事件循环机制)

  • 补做前几年税审对报税税务评级有什么影响?
  • 什么情况下一般纳税人可以简易征收
  • 网上代增值税专用发票流程
  • 利息收入交税税率
  • 核定征收的计算方法有哪些
  • 电子发票打小了可以报销吗
  • 加计抵扣进项税进营业外收入
  • 金蝶专业版怎么增加一级科目
  • 财务报表有哪些局限性
  • 停业之后申请恢复营业申请书范文
  • 通行费电子增值税怎么算
  • 员工内部跑步活动费用怎么做分录?
  • 销售现金券会计分录
  • 老板给的钱计入什么科目
  • 数量金额式适用于哪些科目
  • 营改增后租金收入交什么税
  • 资金账簿怎么交
  • 普通发票冲红的限制几张以上
  • 税控盘开票流程图解2022
  • 职工福利费为什么是14%
  • 缴纳印花税税会计分录怎么做
  • 怎么看是不是专用发票
  • 创新券兑付怎么操作
  • 企业所得税季度预缴可以弥补以前年度亏损吗
  • 咨询费的税费
  • 企业收入不进公账怎样做账?
  • 其他权益工具投资属于什么科目
  • 企业的银行利息收入要交企业所得税吗
  • 收到其他公司的罚款会计分录
  • ms-dos 6.0
  • 产负债表的负债项目,显示了企业所负担债务的
  • 如何防止别人蹭热点
  • excel多表操作法
  • csdn创作
  • 有关五险一金的知识
  • 境外机动车临时可以办理什么车险业务
  • vue2:elementUI中Form 表单在特定情况下做动态rules添加删除
  • 项目部署计划
  • 未完待续百度百科
  • 不开票销售收入怎么做账务处理
  • 出口退税退下来还得缴税吗
  • 固定资产处置营业外支出
  • 租用办公室装修费用会计分录
  • sql2008安装出现以下错误
  • windows11/windows10专业清理的系统工具Duplicate Cleaner5.0.13中文破解免费下载
  • mysql proxy问题的解决方法
  • 现金流量表的编制依据
  • 旅行社开具的发票
  • 我国的税种及税率
  • 挂靠建筑公司企业所得税怎么交?
  • 物业公司代收取暖费怎么缴纳税额
  • 多栏式日记账核算组织程序优缺点
  • 体检入账的原始凭证是
  • 进项转出做账做什么会计
  • 制造费用月末怎么结转到生产成本
  • 企业在非同一控制下的企业合并
  • 滞纳金的收取范围是什么
  • windows开始菜单在哪里
  • 开启win7
  • ubuntu help
  • 如何重装系统win7具体步骤
  • win7电脑找不到无线网络连接图标
  • windows日历
  • linux备份的文件bak如何恢复
  • win7运行速度
  • javascriptz
  • cmd打开telnet
  • unity服务器端
  • Please ensure that adb is correctly located at 'D:Androidandroid-sdkplatform-toolsadb.exe' and
  • Python中模块和包的区别
  • python 字符 字符串
  • javascript基于什么的语言
  • python抓视频保存本地
  • 国家税务总局会议管理办法
  • 河南电子税务局官网入口
  • 广东 电子税局 app
  • 行政事业单位的会计核算以什么为基础
  • 上报汇总之后怎么申报
  • 地税局上班时间是几点
  • 银行存款利息收入现金流量表计入哪
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设