亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

你好,js里document.onclick把本來要執行的方法屏蔽掉了?這是咋回事?

你好,js里document.onclick把本來要執行的方法屏蔽掉了?這是咋回事?

以下是我自己做的下拉列表的js,想實現在菜單顯示后點擊別的地方菜單隱藏的效果,找了一些方法,以下js或許能行,但是用document.onclick把本來的click給屏蔽掉了,不知道該怎么解決,求助各位,謝謝了!/* 下拉菜單 顯示菜單 */var flag=false;//列表是否為已展開狀態var liId = "";//當前列表idvar count = 0;//當前ul的點擊次數var isOver = false;//點擊事件是否已執行function closeMenuWhenClickOther(){if(document.getElementById(liId) != "" && count == 1){if(document.getElementById(liId) != window.event.srcElement){if(flag == true){document.getElementById(liId).style.display = "none";//隱藏列表flag=false;}}}}function showUl(ulName){var thisUl = document.getElementById(ulName).style.display;if(thisUl == "none")//判斷列表是否為已隱藏{document.getElementById(ulName).style.display = "block";//顯示列表liId = ulName;flag = true;//設置狀態為已展開count = 1;}else{document.getElementById(ulName).style.display = "none";//隱藏列表liId = "";}isOver = true;}/* 下拉菜單 選擇選項 */function changeTitle(ulName,thisO){document.getElementById(ulName+"_title").innerHTML = thisO.innerHTML;document.getElementById(ulName).style.display = "none";}document.onclick = closeMenuWhenClickOther;
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

首先要弄明白一樣東西,就是DOM的事件響應順序,通常是從里層往外冒泡的方式響應事件的,所以,當你點擊你的菜單項顯示菜單時同時觸發了你綁定在最外層document上的onclick事件,這時此事件剛好是用來隱藏你的菜單的,結果就是當你點擊菜單時顯示不出來了.這樣試試, 在showUl方法里面最后加上一句 return false; 用來阻止此點擊事件向外層冒泡而觸發最外層的document上的onclick事件,這樣應該就OK了

查看完整回答
反對 回復 2021-08-16
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

親,你這個是事件冒泡的原因,因為默認document是最頂層的對象,document里面的其他對象只要觸發了click事件,都會冒泡的document上,導致document的click事件也會同時發生,解決辦法,網上搜一下如何阻止事件冒泡就可以找到解決辦法了

查看完整回答
反對 回復 2021-08-16
  • 3 回答
  • 0 關注
  • 416 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

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

公眾號

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