初学者一个很简单的数字抽奖的Javascript有几个不太明白的地方_百度知 ...
发布网友
发布时间:2022-04-29 01:55
我来回答
共2个回答
热心网友
时间:2022-04-22 21:44
第一个问题: beginRndNum的参数传递的不是按钮的id
这个问题其实是$()的参数问题,虽然题目中没有明写,这里的$应该是jQuery对象, jquery获取一个dom对应的元素节点有很多种方法,最常见的是传入dom的id,格式是$("#btm"),是一个字符串,字符串内部是一系列特定格式的选择符表示方法;另一种较常见的方式是直接传递dom对象,格式是var domObj = document.getElementById("btn");var jqueryObj = $(domObj),正好对应到此例中的$(this)
所以$(trigger)就等效成了$(document.getElementById("btn")),同样可以控制val()
第二个问题:
三个函数的作用:
updateRndNum只负责生成随机数并更新页面上随机数的展示;
beat 负责触发一次updateRndNum,并每隔一段时间(1ms)在调一下自身(这样子就形成了一直循环的样子) 这里其实有个误区,1ms的精度在浏览器中还达不到
beginTimer 只负责吧beat第一次调起来.
beginRndNum 则负责用户的启动和停止两个动作,启动的时候触发beginTimer,停止的时候关掉beat对应的计时器中止以后的beat调用.追问非常感谢,还有两个小问题,1.我感觉就是beat功能也能做到第一次调起并循环下去的作用,为什么要加个beginTimer来调起beat的循环?
追答beginTimer和beat的差一点在于是否更新数字和视图,其实是可以直接使用beat取代beginTimer的,在快速循环的情况下,初始那一次的展示对用户影响不大.
热心网友
时间:2022-04-22 23:02
你应该还没有看过关于函数传参的部分吧
首先onclick事件里面的beginRndNum(this),这里面的this就是针对当前的这个开始按钮的这个input标签的,所以当然可以操作开始的这个按钮了呀
在一个$(trigger).val("开始"); 如果要把里面的trigger换成你说的id btn的话 应该是$(‘#btn’).val("开始"); 这样子的 在beginRndNum这个函数里面$(trigger)这样写就代表了 她是针对这个开始的input标签操作的
你可以看下这个 我之前写的http://hi.baidu.com/leona_lily/item/0aaa580091d9e5aa02ce1b51