導航:首頁 > 解決方法 > 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手寫一個簡單的防抖方法相關的資料

熱點內容
最直接最簡單試驗應急燈的方法 瀏覽:97
土豆的用途和使用方法 瀏覽:547
治療骨刺較好方法 瀏覽:838
紅包燈籠手工簡便製作方法 瀏覽:778
暴發調查常用的方法 瀏覽:71
1995五糧液真假鑒別方法圖 瀏覽:557
韌帶足踝韌帶斷裂最好的治療方法 瀏覽:589
西方信用分析方法 瀏覽:412
固態硬碟散熱架安裝方法 瀏覽:832
肩周炎怎麼鍛煉好鍛煉方法 瀏覽:9
簡單的方法做水晶彩棉 瀏覽:499
製做酸菜方法視頻 瀏覽:496
歸因分析屬於什麼研究方法 瀏覽:501
微商做好的方法如何做一名微商 瀏覽:470
植被生態需水計算方法 瀏覽:466
新密碼設置在哪裡設置方法 瀏覽:193
肛瘺的症狀治療方法 瀏覽:416
車門鎖扣上下調整方法視頻 瀏覽:229
白果的使用方法 瀏覽:468
腳底老皮用什麼方法能除掉 瀏覽:596