這些我編寫的代碼當用戶點擊模式外的任何地方時,關閉它,但它不工作,我的代碼有什麼錯誤。 「盒子搜索」,「登錄」,「註冊」元素ID名稱。這些我編寫的代碼當用戶點擊模式外的任何地方時,關閉它但它不工作。我的代碼中有什麼錯誤
回答
每次你通過你的循環迭代時間,您是window.onclick
消滅了最後一個值,並創下新的功能作爲其值。使用.addEventListener()
來註冊事件處理程序。
現在,說了這樣的話,在回調函數中使用i
時會出現問題,因爲i
被聲明爲更高級別,所以會在其周圍創建閉包。你可以閱讀更多關於關閉here。關閉導致事件處理函數都在尋找modal[3]
,因爲這是循環退出時最後一個值i
被設置爲。
爲了避免關閉和糾正window.onclick
重寫,腳本應該是:
<script>
// Use modern standards to set up event handlers:
window.addEventListener("click", testModal)
function testModal(event){
var modal = ["box-search","login","register"];
// Use the built-in Array.prototype.forEach method to loop
// through the array elements, thus avoiding a numeric counter
modal.forEach(function(element){
// Search the DOM for elements that have id'sthat
// match the modal array's id's
var el = document.getElementById(element);
// Check the found element
if (event.target == el) {
el.style.display = "none";
}
});
}
</script>
其工作。非常感謝你 – Baswaraj
@Baswaraj不客氣。不要忘記投票答案,幫助你。 –
你window.onClick是錯誤的:
1 - 你在函數外的模態循環,你應該做的裏面讓它正常工作
2 - 你event.target比較模態數組元素,而不是它的id
3-嘗試一種風格分配給一個字符串(模式[1]),而不是你的event.target對象
這是重編寫的函數(它應該工作)
window.onclick = function(event) {
for(var i=0;i<3;i++) {
if (event.target.id == modal[i]) {
event.target.style.display="none";
}
}
}
- 1. 這是什麼錯我的JavaScript代碼?它不工作在IE8
- 2. 剩餘 - 我的代碼不正確,但它爲什麼工作?
- 3. jquery模式讓它關閉,當我點擊其他地方
- 4. Jquery代碼不工作,但JavaScript是。我的錯誤是什麼?
- 5. 爲什麼我的代碼運行錯誤,它是關於「@property」
- 6. 它編譯,但是當我提交它說代碼是錯誤的
- 7. 爲什麼VisualStudio關閉時,我寫這個Wpf xmal代碼
- 8. 當用戶點擊「Category」時,如何讓我的代碼關閉下拉菜單?
- 9. 我的代碼中有什麼錯誤?
- 10. 我的代碼中有什麼錯誤?
- 11. 爲什麼這個C++代碼編譯?它有什麼作用?
- 12. 我不知道爲什麼我的代碼是錯的?它有什麼不對?
- 13. 當我運行我的android UIAutomator代碼時,它顯示錯誤
- 14. 代碼在gcc編譯器上正常工作,但是當我將它提交給編碼門戶(SPOJ)時,它顯示運行時錯誤,爲什麼?
- 15. 我的java代碼沒有錯誤,但它爲什麼不運行?
- 16. 這有什麼錯我的C#代碼
- 17. 爲什麼它在LINQPad中工作,但不在我的代碼中?
- 18. 當我點擊提交時,PHP代碼丟失了它的值
- 19. 我有這個代碼,但我不知道爲什麼它不會工作有人可以告訴我嗎?
- 20. 我的sqlite代碼裏面有些東西是錯的,但我看不到它
- 21. JavaScript代碼不起作用,寫了這段代碼來驗證我的表單,但它不起作用
- 22. 這段代碼我寫了什麼錯?
- 23. 不知道這段代碼有什麼問題。它不工作
- 24. 爲什麼這個簡單的代碼提供沒有時間????工作,然後當我重新啓動我的代碼塊它有時工作
- 25. 我沒有看到錯誤在我的編碼,但是當我的應用程序運行它強制關閉
- 26. WebGL代碼的解釋 - 爲什麼它的工作方式
- 27. 爲什麼不挽留需要在我的代碼,但它的工作原理
- 28. 我輸入了這段代碼,當我點擊構建時,它給了我這個錯誤?
- 29. 我的代碼不工作,但我不知道爲什麼
- 30. 我的代碼在這裏有什麼錯誤?我似乎無法得到它的工作。
的可能的複製[JavaScript的閉包內環路 - 簡單實用的例子(http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – Xufox
每次迭代循環時,都會抹掉window.onclick的最後一個值並將新函數設置爲其值。使用'.addEventListener()'註冊事件處理程序。 –