jQuery setTimeout傳遞字符串參數(shù)報(bào)錯(cuò)的解決方法
更新時(shí)間:2014年06月09日 17:27:56 作者:
這篇文章主要介紹了jQuery setTimeout傳遞字符串參數(shù)報(bào)錯(cuò)的解決方法,需要的朋友可以參考下
當(dāng)你打算調(diào)用一些jQuery代碼顯示隱藏的一個(gè)元素,并調(diào)用setTimeout()在一段延時(shí)之后設(shè)置其HTML的內(nèi)容:
整個(gè)頁(yè)面的代碼是這樣的.
<span style="font-size:18px;"><html>
<head>
<title></title>
</head>
<body>
<a href="#" id='heihei' onclick="showNext('I am veinei ')">show next</a>
<a href="#" id="log" style="display:none" >yes,I am the next </a>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function showNext(text){
setTimeout("$('#log').show().text(text)",1000);
}
</script>
</body>
</html>
</span>
.show()確實(shí)調(diào)用成功了.但是.text()調(diào)用失敗了.console顯示 text未定義.
對(duì)于這個(gè)問(wèn)題,我確實(shí)沒(méi)有找到更好的答案...我想是不是jQuery對(duì)這個(gè)傳入setTimeout()函數(shù)的內(nèi)容做了修改導(dǎo)致變量失效.
我緊接著做了下一個(gè)實(shí)驗(yàn).
<span style="font-size:18px;"><html>
<head>
<title></title>
</head>
<body>
<a href="#" id='heihei' onclick="showNext('I am veinei ')">show next</a>
<a href="#" id="log" style="display:none" >yes,I am the next </a>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function showNext(text){
setTimeout("alert(text)",1000);
}
</script>
</body>
</html>
</span>
我要看看是不是確實(shí)是jQuery出了問(wèn)題.得到的是同樣的錯(cuò)誤.
后來(lái)找了本書看了看.發(fā)現(xiàn)了問(wèn)題的所在.
setTimeout() 接受一個(gè)字符串參數(shù)時(shí),它執(zhí)行于全局作用域,也就是說(shuō),它位于任何函數(shù)之外.最簡(jiǎn)單的修復(fù)手段就是使用一個(gè)局部函數(shù)(匿名函數(shù))來(lái)解決這個(gè)問(wèn)題.
<span style="font-size:18px;"><html>
<head>
<title></title>
</head>
<body>
<a href="#" id='heihei' onclick="showNext('I am veinei ')">show next</a>
<a href="#" id="log" style="display:none" >yes,I am the next </a>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function showNext(text){
setTimeout(function(){$('#log').show().text(text);},1000);
}
</script>
</body>
</html>
</span>
成功解決這個(gè)問(wèn)題.
整個(gè)頁(yè)面的代碼是這樣的.
復(fù)制代碼 代碼如下:
<span style="font-size:18px;"><html>
<head>
<title></title>
</head>
<body>
<a href="#" id='heihei' onclick="showNext('I am veinei ')">show next</a>
<a href="#" id="log" style="display:none" >yes,I am the next </a>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function showNext(text){
setTimeout("$('#log').show().text(text)",1000);
}
</script>
</body>
</html>
</span>
.show()確實(shí)調(diào)用成功了.但是.text()調(diào)用失敗了.console顯示 text未定義.
對(duì)于這個(gè)問(wèn)題,我確實(shí)沒(méi)有找到更好的答案...我想是不是jQuery對(duì)這個(gè)傳入setTimeout()函數(shù)的內(nèi)容做了修改導(dǎo)致變量失效.
我緊接著做了下一個(gè)實(shí)驗(yàn).
復(fù)制代碼 代碼如下:
<span style="font-size:18px;"><html>
<head>
<title></title>
</head>
<body>
<a href="#" id='heihei' onclick="showNext('I am veinei ')">show next</a>
<a href="#" id="log" style="display:none" >yes,I am the next </a>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function showNext(text){
setTimeout("alert(text)",1000);
}
</script>
</body>
</html>
</span>
我要看看是不是確實(shí)是jQuery出了問(wèn)題.得到的是同樣的錯(cuò)誤.
后來(lái)找了本書看了看.發(fā)現(xiàn)了問(wèn)題的所在.
setTimeout() 接受一個(gè)字符串參數(shù)時(shí),它執(zhí)行于全局作用域,也就是說(shuō),它位于任何函數(shù)之外.最簡(jiǎn)單的修復(fù)手段就是使用一個(gè)局部函數(shù)(匿名函數(shù))來(lái)解決這個(gè)問(wèn)題.
復(fù)制代碼 代碼如下:
<span style="font-size:18px;"><html>
<head>
<title></title>
</head>
<body>
<a href="#" id='heihei' onclick="showNext('I am veinei ')">show next</a>
<a href="#" id="log" style="display:none" >yes,I am the next </a>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<script type="text/javascript">
function showNext(text){
setTimeout(function(){$('#log').show().text(text);},1000);
}
</script>
</body>
</html>
</span>
成功解決這個(gè)問(wèn)題.
您可能感興趣的文章:
- 關(guān)于setInterval、setTimeout在jQuery中的使用注意事項(xiàng)
- jQuery setTimeout()函數(shù)使用方法
- SQL查詢超時(shí)的設(shè)置方法(關(guān)于timeout的處理)
- JQuery中SetTimeOut傳參問(wèn)題探討
- Jquery倒數(shù)計(jì)時(shí)按鈕setTimeout的實(shí)例代碼
- sliderToggle在寫jquery的計(jì)時(shí)器setTimeouter中不生效
- node.js超時(shí)timeout詳解
- js超時(shí)調(diào)用setTimeout和間歇調(diào)用setInterval實(shí)例分析
- jQuery AJAX timeout 超時(shí)問(wèn)題詳解
相關(guān)文章
jquery實(shí)現(xiàn)通用版鼠標(biāo)經(jīng)過(guò)淡入淡出效果
這篇文章主要介紹了jquery實(shí)現(xiàn)的通用版鼠標(biāo)經(jīng)過(guò)淡入淡出效果,需要的朋友可以參考下2014-06-06
jquery.boxy彈出框(后隔N秒后自動(dòng)隱藏/自動(dòng)跳轉(zhuǎn))
對(duì)于 Boxy彈出框的使用之前寫過(guò)一些文章(查看jquery.boxy基礎(chǔ)),今天主要是在解決一個(gè)需要之后,覺(jué)得值得把它記錄下來(lái),所以就再寫一篇,主要功能是,在彈出對(duì)話框后,隔N秒后自動(dòng)隱藏,還有就是自動(dòng)跳轉(zhuǎn)2013-01-01
基于jQuery實(shí)現(xiàn)美觀且實(shí)用的倒計(jì)時(shí)實(shí)例代碼
倒計(jì)時(shí)效果在我們的日常生活中經(jīng)常會(huì)用到,比如說(shuō)高考倒計(jì)時(shí)、元旦放假倒計(jì)時(shí)、春節(jié)放假倒計(jì)時(shí)等等,下面通過(guò)本篇文章給大家分享基于jQuery實(shí)現(xiàn)美觀且實(shí)用的倒計(jì)時(shí)實(shí)例代碼,對(duì)jquery倒計(jì)時(shí)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12
jQuery僅用3行代碼實(shí)現(xiàn)的顯示與隱藏功能完整實(shí)例
這篇文章主要介紹了jQuery僅用3行代碼實(shí)現(xiàn)的顯示與隱藏功能,以完整實(shí)例形式分析了jQuery實(shí)現(xiàn)鼠標(biāo)響應(yīng)及頁(yè)面元素屬性變換的相關(guān)技巧,需要的朋友可以參考下2015-10-10
基于jQuey實(shí)現(xiàn)鼠標(biāo)滑過(guò)變色(整行變色)
相信大家在一些網(wǎng)站都看到過(guò)這種效果吧,當(dāng)鼠標(biāo)放在新聞列表一行的時(shí)候,整行就會(huì)變色,雖然使用CSS也能夠?qū)崿F(xiàn)此種功能,但是由于眾多瀏覽器版本對(duì)于CSS3并沒(méi)有良好的支持,所以在當(dāng)前情況下,使用jQuery實(shí)現(xiàn)此種功能是一個(gè)不錯(cuò)的選擇2015-12-12

