我有一個應用程序包含一個帶有五個輸入字段的表單。當用戶點擊輸入字段時,應該顯示工具提示,工作正常。當我嘗試刪除工具提示時會出現問題,如果用戶單擊另一個輸入字段就會發生這種情況。下面是我的應用程序中的一段代碼,我希望足夠了解它的工作原理。函數被事件調用兩次
傳遞給「showTooltip()」的參數是對單擊的輸入字段,顯示在工具提示中的文本以及用於查找包含的div的數字(0-4)的DOM引用圍繞點擊的輸入字段(所有輸入字段都在它們自己的div內)。
該應用程序工作正常,但在點擊了幾次字段後,控制檯中顯示以下消息:「節點未找到 - inputDiv.removeChild(tooltip)。我發現了對於這種情況的原因是,該功能「hideTooltip()」有時也被稱爲兩次,但我不能找出原因,爲什麼會這樣。
任何線索?
showTooltip: function(inputField, tooltipText, divNr){
var container = document.getElementById('container');
var inputDiv = container.getElementsByTagName('div');
var inputDiv = inputDiv[divNr];
var tooltip = document.createElement('div');
tooltip.className = "tooltip";
var text = document.createTextNode(tooltipText);
tooltip.appendChild(text);
inputDiv.appendChild(tooltip);
inputField.addEventListener('blur', function() { hideTooltip(inputField, inputDiv, tooltip, inputNode);});
},
hideTooltip: function(inputField, inputDiv, tooltip, nr){
inputDiv.removeChild(tooltip);
validateField(inputField);
}
請注意,在處理事件時使用jQuery具有巨大的優勢,因爲它可以處理幕後的事情,以確保事件適用於所有瀏覽器。 IE8及以下版本不支持'addEventListener'和'removeEventListener'函數。相反,你將不得不使用'attachEvent'和'detachEvent'。 – chawkinsuf
謝謝。我試過了代碼(這真的會像我看到的那樣),但由於某種原因顯示了相同的錯誤? :/ – holyredbeard
你現在看到什麼錯誤?你使用的是什麼瀏覽器? – chawkinsuf