javascript - 使用 FetchContent JS 发出警报
问题描述
我试图在单击事件后使“保存”按钮警报,但我没有成功。
Perfil.html
- Profile.html 不是主页。它是仪表板的一部分。
<li class="nav-item">
<a class="nav-link" href="#" a-view="infoPessoal" onclick="fetchContent(this)" a-folder="administrativo">
<i class="fas fa-info-circle"></i>
<!-- Icones -->
Informações
</a>
</li>
<div class="ajax-fullscreenperfil" id="ajax-fullscreenperfilJs">
<p></p>
</div>
<script>
let button2 = document.querySelector('form button.btn')
button2.addEventListener('click', () => {
alert("Handler for .click() called.")
})
</script>
Ajax.js
- 我曾经在导航栏所在的同一页面上进行 html 调用。
let content = document.getElementById('ajax-fullscreenperfilJs')
function fetchContent(el) {
let view = el.getAttribute('a-view')
let folder = el.getAttribute('a-folder')
fetch(`../ajax/${folder}/${view}.html`)
.then(response => {
let html = response.text()
return html
})
.then(html => {
console.log(html)
content.innerHTML = html
})
}
InfoPessoal.html
- 这是将在 prof.html div 中显示的页面。
<div class="main-content">
<div class="perfil-parent">
<div class="perfil">
<div class="perfil-img">
<div class="img">
</div>
</div>
<div class="perfil-form">
<form>
<div class="form-group">
<label for="name">Nome Completo:</label>
<input type="text" class="form-control" id="name" placeholder="Insira seu nome completo.">
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="email" class="form-control" id="email" placeholder="Insira seu email.">
</div>
<div class="form-group">
<label for="idade">Idade:</label>
<input type="text" class="form-control" id="idade" placeholder="Insira sua idade.">
</div>
<div class="form-group">
<label for="corp">Instituição:</label>
<input type="text" class="form-control" id="corp" placeholder="Insira sua Instituição ou empresa.">
</div>
<div class="form-group">
<label for="genre">Prioridade de acesso:</label>
<select class="form-control" id="genre">
<option>Cliente</option>
<option>Manutenção</option>
<option>Administrador</option>
</select>
</div>
<div class="form-group">
<label for="password">Senha:</label>
<input type="password" class="form-control" id="password" placeholder="Insira sua senha.">
</div>
<div class="custom-file">
<input type="file" class="custom-file-input" id="customFile">
<label class="custom-file-label" for="customFile">Escolher foto</label>
</div>
<button type="button" class="btn">Salvar</button>
</form>
</div>
</div>
</div>
</div>
我可以通过 Ajax 正确运行 infoPersonal.html 视图,但我无法单击“保存”按钮发送警报。
解决方案
这可能是因为您在 AJAX 响应返回之前运行了以下代码。这意味着您正在尝试选择尚不存在的 DOM 元素。
let button2 = document.querySelector('form button.btn')
button2.addEventListener('click', () => {
alert("Handler for .click() called.")
})
我认为最简单的解决方案是将上述代码包装在一个函数中并在获取响应中触发该函数。
function alertFunc() {
let button2 = document.querySelector('form button.btn')
button2.addEventListener('click', () => {
alert("Handler for .click() called.")
})
}
function fetchContent(el) {
let view = el.getAttribute('a-view')
let folder = el.getAttribute('a-folder')
fetch(`../ajax/${folder}/${view}.html`)
.then(response => {
let html = response.text()
return html
})
.then(html => {
console.log(html)
content.innerHTML = html
alertFunc() // <----- fire it here
})
}
推荐阅读
- html - 必须调整窗口大小才能使其正常工作
- android - Android 导航组件 - OnNavigateUpListener
- reactjs - 如何在 react tsx 导入中包含命名空间?
- opencv - opencv detectmultiscale3中levelweights的值范围是多少?
- android - 菜单项在 2 个不同的适配器上表现不同
- flutter - 如何在 Ubuntu 的 vscode 中设置颤振应用程序并设置模拟器?
- javascript - 将元素推入for循环内的数组中
- traveling-salesman - 无仓库 VRP - 路边援助
- wordpress - 当我已经创建了一个新的 Wordpress 网站时,创建一个新网站的过程是什么
- postgresql - 如何访问postgresql中的特定数据库