У меня есть приложение, содержащее форму с пятью полями ввода. Когда пользователь нажимает на поле ввода, должна отображаться подсказка, которая отлично работает. Проблема возникает, когда я пытаюсь удалить всплывающую подсказку, которая происходит, если пользователь нажимает на другое поле ввода. Ниже приведен фрагмент кода из моего приложения, и я надеюсь, что этого достаточно, чтобы понять, как оно работает.
Аргументы, которые передаются в "showTooltip ()", являются ссылкой DOM на поле ввода, по которому щелкнули мышью, текстом, отображаемым во всплывающей подсказке, и числом (0-4), которое используется для нахождения содержащего div, который является окружение поля ввода, по которому щелкнули (все поля ввода находятся внутри собственного div).
Приложение работает нормально, но после того, как я несколько раз щелкнул по полям, в консоли отобразилось следующее сообщение: «Узел не найден - inputDiv.removeChild (подсказка). Я обнаружил, что Причина этого заключается в том, что функция 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);
}