【发布时间】:2021-08-28 01:52:33
【问题描述】:
addEventListener(click) 中的 fetch api 只工作一次。
HTML 代码:
<form action="/register/callback" method="post">
<input type="text" name="id" placeholder="id" value="${flash.id}" class="infoTp reg confIn" required />
<div id="useridConf">
<button type="button" class="infoSub conf" id="cfuserid">Id Confirm</button>
</div>
<input type="text" name="email" placeholder="email" value="${flash.email}" class="infoTp reg confIn" required />
<div id="emailConf">
<button type="button" class="infoSub conf" id="cfemail">Email Confirm</button>
</div>
<input type="password" name="pw" placeholder="password" value="${flash.pw}" class="infoTp reg" required />
<input type="password" name="pw2" placeholder="second password" value="${flash.pw2}" class="infoTp reg" required />
<input type="text" name="nickname" placeholder="nickname" value="${flash.nickname}" class="infoTp reg confIn" required />
<div id="nicknameConf">
<button type="button" class="infoSub conf" id="cfnickname">Nickname Confirm</button>
</div>
<div id="borderReg" class="reg">
<input type="submit" name="signup_submit" value="Register" class="infoSub" id="regBtn" />
</div>
</form>
JavaScript 代码:
let confs = document.getElementsByClassName('conf');
let confIns = document.getElementsByClassName('confIn');
if (confs) {
for(let i = 0; i < confs.length; i++) {
confs[i].addEventListener('click', function() {
if (confIns[i].value) {
fetch(`/confirm?${confs[i].id.slice(2)}=${confIns[i].value}`).then(function(response){
response.text().then(function(text){
if (document.getElementById(`${confs[i].id.slice(2)}Span`)) {
document.getElementById(`${confs[i].id.slice(2)}Span`).parentNode.removeChild(document.getElementById(`${confs[i].id.slice(2)}Span`));
}
document.getElementById(`${confs[i].id.slice(2)}Conf`).innerHTML += text;
console.log('fin');
});
});
}
console.log("hello");
});
}
}
获取代码完成后,事件监听器不起作用。如何获取多次?
【问题讨论】:
标签: javascript html addeventlistener fetch-api