1. 程式人生 > >關於setInterval、setTimeout在jQuery中的使用注意事項

關於setInterval、setTimeout在jQuery中的使用注意事項

最近碰到個問題,在使用jquery寫定時器時,總是會出現fn不存在的錯誤提示以前寫定時器的時候,總是習慣直接

setInterval("fn()",2000);
最近碰到個問題,在使用jquery寫定時器時,總是會出現fn不存在的錯誤提示,如下

$(function(){setInterval("fn()",2000);})
解決方法是去掉引號和括號,採用最原始的方法

$(function(){setInterval(fn,2000);})
另外一種就是在書寫jq的擴充套件,如下
程式碼如下:
$(function(){
$.extend({
fn:function(){
alert("im fn!");
}
});
setInterval("$.fn()",2000);
});

以上寫法都是沒什麼問題的。但是如果需要傳遞引數該如何?

像上面第一種寫法,

$(function(){setInterval(fn,2000);})
如果寫成

$(function(){setInterval(fn(para),2000);})
就報錯了。這個比較經典,比較白痴。

這時你可以內建一個function,寫成

$(function(){setInterval(function(){fn(para)},2000);})
這樣也是可以的。

至於第二種方法如何傳遞,這就更簡單了,我就不多說了。

發到部落格僅當記憶使用,都是基礎啊!也是初學者容易犯錯的地方!


//========================

還是補充下第二種傳參的方法。

先看段程式碼
複製程式碼
程式碼如下:
$(function(){
$start = 1;
$.extend({
a:function(t){
$index = t;
alert($index);
$start++;
}
});
setInterval("$.a("+$start+")",2000);
});

有一些人會嘗試這麼去寫,結果是什麼?結果就是alert出來的,一直是1,不會增加。這裡需要注意的是setInterval裡面的第一個引數,這是一個語句,用雙引號括了起來,裡面的東西會被解釋成變數。如果按照上面的寫法,相當於

setInterval("$.a(1)",2000);
那麼結果也就無可厚非了。正確的寫法,當然是這樣
程式碼如下:
$(function(){
$start = 1;
$.extend({
a:function(t){
$index = t;
alert($index);
$start++;
}
});
setInterval("$.a($start)",2000);
});

這時$start才會被解釋成變數。語句相當於function(){a(變數)},而不是function(){a(值)}。

相關推薦

js物件原型(prototype)的使用方法替換以及注意事項

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <t

ScannernextnextLinenextInt使用注意事項

next()和nextLine()區別 next()會自動過濾空格、tab、enter等結束符,直至遇到有效字元之後,空格、tab、enter等會視為結束符 nextLine()掃描整行即enter之前的所有字元(包括空格、tab等) 在nextInt()後使用nextLine()後ne

C# 的 null 包容運算子 “!” —— 概念由來用法和注意事項

在 2020 年的最後一天,[部落格園發起了一個開源專案:基於 .NET 的部落格引擎 fluss](https://www.cnblogs.com/cmt/p/14217355.html),我抽空把原始碼下載下來看了下,發現在屬性的定義中,有很多地方都用到了 `null!`,[如下圖所示](https://

c盤瘦身windows解除上網限速貼膜注意事項

1、c盤瘦身 1.1、https://zhidao.baidu.com/question/2057622451987202467.html 1.2、把C盤的swap空間換到D盤   2、windows解除上網限速   XP/WIN7系統都會預設限制20%的網速,我們可以很輕鬆地

Ubuntu下protobuf的安裝編譯及注意事項

Ubuntu下編譯protobuf 1.下載protobuf 下載地址:https://github.com/google/protobuf/releases 2.編譯protobuf 解壓下載的zip包,cd到protobuf的目錄下,執行以下指令: tar -xvf pro

Linux學習筆記22——vim 的額外功能其他vim注意事項

目錄   一、vim 的額外功能 1,區塊選擇(Visual Block) 2,多檔案編輯 3,多視窗功能 4,vim 的挑字補全功能 5,vim 環境設定與記錄: ~/.vimrc, ~/.viminfo 6,vim 常用指令示意圖 二、其他 vim

將模板檔案保持原目錄,呼叫標籤__TMPL__/portal/ images模板檔案注意事項

  1、放置模板檔案 __TMPL__/portal/ images  :批量替換路徑 __ROOT__ 網站根目錄  這樣就可以原模板目錄結構不變,呼叫非常方便,快速實現模板製作 模板注意事項:模板檔案必須配合一個json檔案,不然預設在後臺選擇時

SWIFT4.0學習01 - 函式的命名呼叫以及注意事項

swift語法中函式的使用大概分為以下幾種: swift中函式的命名格式 無返回值函式 有引數有返回值的函式 多個返回值的函式 如何定義外部引數名 如何忽略引數名 如何給引數設定預設值 如何定義可變引數 修改外部引數的值,Inout關鍵字的使用 函式的型別 函式

python用map()函式和多執行緒threadingThread採集注意事項

import re import requests from threading import Thread def getUrl(): url = 'http://www.xiaohuar

tokuDB儲存引擎的安裝配置使用及注意事項

平臺支援: TokuDB 只能在 64-bit Linux 下使用. 最小記憶體要求: TokuDB 需要至少1GB 的實體記憶體,當然這裡建議最好是 2GB . 1、安裝mysql(可以是mariadb、percona或oracle mysql) 安裝p

Virtualbox下安裝CentOS和Ubuntu過程注意事項

1、Virtualbox下安裝CentOS過程中的注意事項: (1)在安裝Oracle VM VirtualBox的時候一定要保證安裝目錄的磁碟空間至少要大於你分配虛擬空間,保證安裝過程有足夠的磁碟空間。一般建議8-10G。如果安裝過程出現如下圖所示錯誤ID:BLKCACH

Tensorflow兩種資料讀取方法應用對比及注意事項

本文對比介紹了兩種Tensorflow針對大資料集的資料讀取方法,具體來說是:方法1:tf.train.slice_input_producer+流水線(這裡用這個API指代這一類,其實還有其他的API)。方法2:Dataset方法,據說是Tensorflow 1.3版本之後

二叉樹常用操作演算法集解釋及注意事項

二叉樹是一種常用的資料結構,在程式中也經常需要使用二叉樹,但是你所使用語言卻並不一定提供了二叉樹這種資料型別,所以為了方便使用,我們可以自己實現一個二叉樹的資料型別。在需要時就像使用其他已定義的型別一樣方便。 下面給出一些本人寫的演算法和解釋(基於C語言),希望對讀者寫一

阿里雲匯出匯入資料注意事項

近期一直在搞伺服器端,在阿里雲上匯出、匯入資料時,遇到了一些問題,在此總結一下。 由於匯出資料時,使用了預設選項,結果導致匯出時很順暢,而匯入時,卻屢次不能成功;而阿里雲的控制檯上,毛提示都沒有啊,鬱悶了半天,想到有可能是字元編碼的問題,於是把字元編碼改成UTF-8,我去

MySql指令用法及注意事項

MySql指令 查看錶結構 desc table_name; 修改某一列的資料型別 假設表stu有一列id原本的資料型別是int(11)將其型別改為varchar(20)的語句如下:

hive注意事項

hive中不能直接訪問非group by 的欄位 注意: 如果出現 Expression not in GROUP BY key 可以使用 collect_set()返回array陣列**。 任何時候,考慮是不是要用distinct 注意

Weex注意事項

weex中很多內容都和js,css是相通的,所以有時候想當然的就以為一些功能是一樣的。 1.比如a標籤,a標籤在html中用法我就不說了,它有一個href屬性用來設定跳轉的連結,在weex中,這可行不

ERP選型準備方法及注意事項

摘要:伴隨著市場的需求,ERP系統管理廠商如雨後春筍般推向市場,企業在選擇時面臨著多種選擇。本文怡海軟體將針對ERP系統如何選型從選型前的準備工作、瞭解ERP廠商、如何選擇及注意事項等方面進行簡要闡述。關鍵詞:ERP,SAP,Oracle,infor接觸過ERP(Enterprise Resource Pla

關於setIntervalsetTimeout在jQuery的使用注意事項

最近碰到個問題,在使用jquery寫定時器時,總是會出現fn不存在的錯誤提示以前寫定時器的時候,總是習慣直接 setInterval("fn()",2000); 最近碰到個問題,在使用jquery寫定時器時,總是會出現fn不存在的錯誤提示,如下 $(function(

JSsetInterval()和clearInterval()的使用以及注意事項 (實用,贊)

原文出處:https://blog.csdn.net/YDesire/article/details/81124331 延伸閱讀:clearInterval(timer)和timer = null的區別 setInterval(): 間隔指定的毫秒數不停地執行指定的程式碼,定時器 clear