导航:首页 > 解决方法 > js手写一个简单的防抖方法

js手写一个简单的防抖方法

发布时间:2022-03-14 13:50:50

‘壹’ 一个简单的JS鼠标单击事件

应该是脚本的错误
document.form
这个好像不行
document.forms
这个是获得当前页面的所有
表单

你的document.form不存在
你可以给form加个id
然后document.getElementById("form的id")
然后就和你上面的一样了
这个js语句有点伤

你可以把脚本单拿出来
在head
定义一个方法来执行

‘贰’ 一个简单的JS问题 (关于 setInterval)

var xxx=window.setInterval("abc()",1000);
停止用:clearInterval(xxx);

‘叁’ 前端!请写一个简单的幻灯效果页面,不使用JS来完成怎么

<!doctypehtml>
<html>
<head>
<style>
img{
display:none;
width:100px;
height:100px;
}

input:checked+img{
display:block;
}

input{
position:absolute;
left:-9999px;
}

label{
cursor:pointer;
}
</style>
</head>
<body>
<divid="cont">
<inputid="img1"name="img"type="radio"checked="checked">
<imgsrc="a.png">
<inputid="img2"name="img"type="radio">
<imgsrc="b.png">
</div>
<divid="nav">
<labelfor="img1">第一张</label>
<labelfor="img2">第二张</label>
</div>
</body>
</html>

可以这样写,但是不能支持所有浏览器。


如果想支持所有浏览器,就需要使用js了。

‘肆’ 原生JS是自己手写的JS吗

原生态js是指遵循ECMAscript标准的javascript,不同于微软的jscript也不依赖于任何框架,依托于浏览器标准引擎的脚本语言,jquery是在原生态的js上集成的框架资源,使用jquery并不代表代码就不是你写的,区别在于使用jquery只是使用了它的语法,更利于兼容以及实现,jquery已经将常规的js兼容问题解决,所以使用起来出现不兼容的情况会更少,更利于开发,但同时,要使用jquery等框架也需要去学习相关的语法,拥有js基础的同学学习jquery时会发现很轻松,在使用时也会发现很方便。

‘伍’ 求js高手写个特效

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style>
#parent {width:320px; height:20px; background:#CCC;

position:relative; margin:10px auto;}
#div1 {width:20px; height:20px; background:red;

position:absolute; cursor:move;}
#hehe {width:320px; height:20px; margin:10px auto;}
</style>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>tuodong</title>
</head>
<script type="text/javascript">
//向右移动的方法
function randleft(){
var i = parseInt(document.getElementById('div1').style.left);
if(isNaN(i)){
i = 0;
}
//到300后就重新来
if(i == 300){
i = 0;
}
if(i+1 > 300){
i = 300;
}else{
//这个1是每次往前的距离
i += 1;
}
//这里控制移动的时间
var a = setTimeout(init,500);
document.getElementById('div1').style.left = i+"px";
document.getElementById('hehe').innerHTML = parseInt(document.getElementById('div1').style.left);
}
//初始方法
function init(){
//调用移动方法
randleft();
var oDiv=document.getElementById('div1');
var oParent=document.getElementById('parent');
var disX=0;
//鼠标点击时触发
oDiv.onmousedown=function (ev)
{
var oEvent=ev||event;
disX=oEvent.clientX-oDiv.offsetLeft;
//只有鼠标是点下去才能触发此移动鼠标的方法
document.onmousemove=function (ev)
{
//区别IE和火狐浏览器
var oEvent=ev||event;
var l=oEvent.clientX-disX;

if(l<0)
{
l=0;
}
else if(l>oParent.offsetWidth-oDiv.offsetWidth)
{
l=oParent.offsetWidth-oDiv.offsetWidth;
}

oDiv.style.left=l+'px';

document.getElementById('hehe').innerHTML=l;
return false;
};
//放开鼠标
document.onmouseup=function ()
{
document.onmousemove=null;
document.onmouseup=null;
};

return false;
};
};
</script>
<body onload="init()">
<div id="box" style="height:400px;width:500px; position:relative;border:#F00 1px solid;margin:0 auto;">
<div id="parent">
<div id="div1"> </div>
</div>
<div id="hehe">0</div>
</div>
</body>
</html>

‘陆’ JavaScript函数节流和函数防抖之间的区别

函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段。
大家大概都知道旧款电视机的工作原理,就是一行行得扫描出色彩到屏幕上,然后组成一张张图片。由于肉眼只能分辨出一定频率的变化,当高频率的扫描,人类是感觉不出来的。反而形成一种视觉效果,就是一张图。就像高速旋转的风扇,你看不到扇叶,只看到了一个圆一样。
同理,可以类推到js代码。在一定时间内,代码执行的次数不一定要非常多。达到一定频率就足够了。因为跑得越多,带来的效果也是一样。倒不如,把js代码的执行次数控制在合理的范围。既能节省浏览器CPU资源,又能让页面浏览更加顺畅,不会因为js的执行而发生卡顿。这就是函数节流和函数防抖要做的事。

函数节流是指一定时间内js方法只跑一次。比如人的眨眼睛,就是一定时间内眨一次。这是函数节流最形象的解释。
函数防抖是指频繁触发的情况下,只有足够的空闲时间,才执行代码一次。比如生活中的坐公交,就是一定时间内,如果有人陆续刷卡上车,司机就不会开车。只有别人没刷卡了,司机才开车。

‘柒’ 求大神给写一个最简单的js代码!

<divid="div1">111</div>
<divid="div2">222</div>

<style>
#div1,#div2{
background:red;
width:100px;
margin:10px;
}
</style>

<script>
window.onload=function(){
varbtn1=document.getElementById("div1");
varbtn2=document.getElementById("div2");
btn1.onclick=function(){
btn2.style.background="yellow";
}
}
</script>

‘捌’ JavaScript中防抖的延时函数

其实就是: func(args)

平时我们看见的函数调用, 如foo('test')其实都是简写, 实际运行是foo.call(this, 'test')
apply(参数1, 参数2)方法是作用之一是改变函数的作用域, 传递两个参数, 其中参数1表示要执行的上下文(作用域), 参数2表示传递给函数的运行参数。
图片中的防抖函数, func.appy(this, args) this这里指的是防抖函数的作用域,即window。注意在ES6的箭头函数中, this是外面的调用函数的作用域(所以图片中的this不是setTimout的作用域)。

‘玖’ javascript函数节流和函数防抖之间的区别

节流概念(Throttle)

按照设定的时间固定执行一次函数,比如200ms一次。注意:固定就是你在mousemove过程中,执行这个节流函数,它一定是200ms(你设定的定时器延迟时间)内执行一次。没到200ms,一定会返回,没有执行回调函数的。

主要应用场景有:scroll、touchmove

防抖概念(Debounce)

抖动停止后的时间超过设定的时间时执行一次函数。注意:这里的抖动停止表示你停止了触发这个函数,从这个时间点开始计算,当间隔时间等于你设定时间,才会执行里面的回调函数。如果你一直在触发这个函数并且两次触发间隔小于设定时间,则一定不会到回调函数那一步。·

主要应用场景有:input验证、搜索联想、resize

节流实现

思路: 第一次先设定一个变量true,第二次执行这个函数时,会判断变量是否true,是则返回。当第一次的定时器执行完函数最后会设定变量为flase。那么下次判断变量时则为flase,函数会依次运行。

防抖实现

思路:首次运行时把定时器赋值给一个变量,第二次执行时,如果间隔没超过定时器设定的时间则会清除掉定时器,重新设定定时器,依次反复,当我们停止下来时,没有执行清除定时器,超过一定时间后触发回调函数。

博文有介绍更详细的原理和代码demo:网页链接,希望可以帮到您

阅读全文

与js手写一个简单的防抖方法相关的资料

热点内容
如何改变口才的方法 浏览:8
蝶泳腿训练方法 浏览:6
羊筋绒的鉴别方法视频 浏览:336
招弟子的最佳方法 浏览:825
阴天房间烟味怎么去除最快方法 浏览:793
疱疹治疗方法有哪些 浏览:133
手机上传照片到电脑上的最佳方法 浏览:759
维生素B含量测定计算方法 浏览:670
选择恐惧症的治疗方法 浏览:40
腹肌训练方法最有用图片 浏览:921
鸡蛋的储存方法与步骤 浏览:483
成年人散光150度恢复训练方法 浏览:86
口腔单纯疱疹治疗方法 浏览:615
手机量角度的方法 浏览:236
杵状脚趾的鉴别方法 浏览:688
远志功效与作用及食用方法 浏览:345
凉亭封板的安装方法 浏览:109
神钩使用方法图解 浏览:301
血袋的使用方法 浏览:946
极简吊轨三联动安装方法 浏览:72