<body>
<input type="text" name="username">
<button id="btn">注册</button>
<script>
/* 本案例需求: 点击注册按钮 获取输入框的value属性值 并在浏览器里面打印
(1)请找出下列代码产生的bug
如何找出来的?
原因分析:
(2)如果想要实现正确的需求,应该如何实现
*/
const val = document.querySelector('[name=username]').value
const btn = document.querySelector('#btn')
btn.addEventListener('click', function () {
console.log(val)
})
</script>
</body>
为什么打印输出一直是空?怎么改?
放在里面
<script>
/* 本案例需求: 点击注册按钮 获取输入框的value属性值 并在浏览器里面打印
(1)请找出下列代码产生的bug
如何找出来的?
原因分析:
(2)如果想要实现正确的需求,应该如何实现
*/
const btn = document.querySelector('#btn')
btn.addEventListener('click', function () {
const val = document.querySelector('[name=username]').value
console.log(val)
})
</script>
【以下回答由 GPT 生成】
根据代码,在点击注册按钮时,需要获取输入框的值,并在浏览器中打印出来。然而,在当前的代码中,值一直为空。
问题出现的原因分析如下: - 在代码中,获取输入框的值是在页面加载时就执行的,并且只执行一次。也就是在代码加载完成之后,立即获取输入框的值。此时,页面刚刚加载完成,用户还没有输入任何内容,所以获取到的值为空。 - 所以,当点击按钮时,仍然打印的是初始化时获取的空值。
为了解决这个问题,我们需要在按钮点击事件触发时,重新获取输入框的值。以下是更改后的代码:
const btn = document.querySelector('#btn');
btn.addEventListener('click', function() {
const val = document.querySelector('[name=username]').value;
console.log(val);
});
【相关推荐】