Причина, по которой ссылки, добавленные с помощью JavaScript, не срабатывают с первого клика, может быть связана с тем, как вы добавляете HTML-содержимое в ваш элемент. Давайте рассмотрим несколько возможных причин и способов их устранения:
1. **Использование `innerHTML`:** При использовании `innerHTML` для добавления новых элементов в DOM, браузер может не распознать события клика для вновь добавленных элементов сразу. Это может происходить из-за того, что обработчики событий не связаны с элементами, добавленными динамически.
**Решение:** Вместо использования `innerHTML` для добавления новых элементов, создавайте элементы программно с помощью `document.createElement` и добавляйте их в DOM с помощью `appendChild` или других методов.
```javascript
_result.forEach(function(elem) {
let _link = document.createElement('a');
_link.href = elem.href;
_link.className = 'btn btn-success btn-sm rounded-5 opacity-75 city m-1';
_link.innerHTML = elem.innerHTML;
_city_search_result.appendChild(_link);
});
```
2. **Обработчики событий:** Убедитесь, что у вас нет конфликтов с обработчиками событий. Если вы добавляете обработчики событий к динамически созданным элементам, они могут не сработать при первом клике.
**Решение:** Добавьте обработчики событий на родительский элемент (делегирование событий). Например:
```javascript
_city_search_result.addEventListener('click', function(event) {
if (event.target.tagName === 'A') {
window.location.href = event.target.href;
}
});
```
3. **Проблемы с обновлением DOM:** Если другие JavaScript-коды или стили влияют на ваше поведение кнопок, это может также привести к такому эффекту. Например, если у вас есть CSS или JavaScript, который управляет состоянием элементов, это может вызвать задержку.
Убедитесь, что проверили все возможные конфликты.
4. **Замена HTML-кода:** Если в `_city_search_result.innerHTML` добавляют старое содержимое, это может также повлиять на ваше поведение. Каждый раз, когда вы вызываете `innerHTML`, вы полностью перезаписываете все содержимое, что может удалять ранее добавленные обработчики событий.
Используйте подход добавления элементов, а не перезаписи всего содержимого.
Попробуйте применить указанные выше советы, и это должно помочь решить проблему с кликами по динамически добавленным ссылкам.