第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

JS:程序能運行,但是無延遲效果。setTimeout(obtn[this.index].onmouseout=function ()意義何在?

function jianjie()

{

var ms=document.getElementsByTagName('span');

var obtn=document.getElementsByTagName('input');

var i=0;

? ? for (var i = 0; i < obtn.length; i++)

{

? ? ? ? obtn[i].index = i;

? ? ? ? obtn[i].onclick= function ()?

{

? ? ? ? ? ms[this.index].style.display = 'block';

? ? ? ? }

obtn[i].onmouseout=function ()

{

setTimeout(obtn[this.index].onmouseout=function () ?//這句按道理應該是setTimeout(function (),但是寫成這樣就不能運行了。

{

ms[this.index].style.display = 'none';

},3000);

}

}

}

//主要目的是第三個input控制第三個SPAN的延遲隱藏與顯示。

正在回答

2 回答

按照你的思路寫了個完整的,應該是這樣,幾個改動地方有注釋:

<!DOCTYPE?HTML>
<html>
<head>
????<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
????<title>無標題文檔</title>
</head>
<body>
<div?style="width:100px;height:100px;">
????<span>234234</span>
</div>
<input?type="button">
<script>
????function?jianjie()?{
????????var?ms?=?document.getElementsByTagName('span');
????????var?obtn?=?document.getElementsByTagName('input');
????????var?i?=?0;
????????var?timer
????????for?(var?i?=?0;?i?<?obtn.length;?i++)?{
????????????obtn[i].index?=?i;
????????????obtn[i].onclick?=?function?()?{
????????????????clearTimeout(timer);?????????????????//保證點擊時不會隱藏
????????????????ms[this.index].style.display?=?'block';
????????????}
????????????obtn[i].onmouseout?=?function?()?{
????????????????clearTimeout(timer);??????????????????//每次移出時確保只執(zhí)行一個定時器
????????????????var?a?=?this.index
????????????????//將this.index用a變量來保存,因為this.index只有在事件觸發(fā)時才會有值,如果設置了settimeout就是undefined,因此用變量將它保存起來
????????????????timer?=?setTimeout(function?()?{
????????????????????ms[a].style.display?=?'none';
????????????????},?3000);
????????????}
????????}
????}
????jianjie()
</script>
</body>
</html>


0 回復 有任何疑惑可以回復我~
#1

慕粉4203582 提問者

精煉到位,運用熟練,是學習的榜樣。
2016-11-01 回復 有任何疑惑可以回復我~
#2

慕粉4203582 提問者

代碼測試有效,但有個小瑕疵,不影響使用。瑕疵是:當同時點擊了 2個 控制的DIV時,第二個被控制的DIV 可以對應的隱藏,但是第一個DIV控制的對應被控制DIV 不會隱藏。謝謝。
2016-11-01 回復 有任何疑惑可以回復我~
#3

慕粉4203582 提問者

clearTimeout(timer); 將第二個清楚定時器去掉,程序好像可以正常運行了??赡芪覇栴}沒寫清楚,所以還是我錯了。問題全面解決,謝謝。
2016-11-01 回復 有任何疑惑可以回復我~
#4

stone310 回復 慕粉4203582 提問者

你說的是一個很對的問題,多個的時候,調用同一個timer定時器肯定會沖突,因此timer定時器必須分別保存到obtn上面,我改了下,原來的timer為obtn[this.index].timer,這樣相當于將定時器儲存到每一個obtn上,多個使用就不有沖突
2016-11-01 回復 有任何疑惑可以回復我~
查看1條回復
<!DOCTYPE?HTML>
<html>
<head>
????<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
????<title>無標題文檔</title>
</head>
<body>
<div?style="width:100px;height:100px;">
????<span>234234</span>
</div>
<input?type="button">
<div?style="width:100px;height:100px;">
????<span>234234</span>
</div>
<input?type="button">
<div?style="width:100px;height:100px;">
????<span>234234</span>
</div>
<input?type="button">
<script>
????function?jianjie()?{
????????var?ms?=?document.getElementsByTagName('span');
????????var?obtn?=?document.getElementsByTagName('input');
????????var?i?=?0;
????????var?timer
????????for?(var?i?=?0;?i?<?obtn.length;?i++)?{
????????????obtn[i].index?=?i;
????????????obtn[i].onclick?=?function?()?{
????????????????clearTimeout(obtn[this.index].timer);?????????????????//保證點擊時不會隱藏
????????????????ms[this.index].style.display?=?'block';
????????????}
????????????obtn[i].onmouseout?=?function?()?{
????????????????clearTimeout(obtn[this.index].timer);????//每次移出時確保只執(zhí)行一個定時器
????????????????var?a?=?this.index
????????????????//將this.index用a變量來保存,因為this.index只有在事件觸發(fā)時才會有值,如果設置了settimeout就是undefined,因此用變量將它保存起來
????????????????obtn[this.index].timer?=?setTimeout(function?()?{
????????????????????ms[a].style.display?=?'none';
????????????????},?3000);
????????????}
????????}
????}
????jianjie()
</script>
</body>
</html>


1 回復 有任何疑惑可以回復我~
#1

慕粉4203582 提問者

歐了,完美。
2016-11-02 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

JS:程序能運行,但是無延遲效果。setTimeout(obtn[this.index].onmouseout=function ()意義何在?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號