<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> </head> <body> <input type="text" class="item" style="width: 106px;" value="姓名" class="name"/> <script> var name = document.getElementsByClassName("name") name.addEventListener("change",function(){ console.log(1111); }) </script> </body> </html> 这段代码的问题在哪 怎么解决
时间: 2023-07-19 18:35:41 浏览: 107
这段代码存在以下几个问题:
1. `class` 属性不能重复定义,所以需要删除一个 `class="name"`2. `getElementsByClassName` 方法返回的是一个 HTMLCollection,需要通过下标或循环来获取元素。因为这里只有一个元素,所以可以使用 `name[0]` 获取元素。
3. `name` 元素是一个输入框,只有在输入完成并且焦点离开时才会触发 `change` 事件。如果想要实时获取输入框的值,可以使用 `input` 事件。
修改后的代码如下:
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
<input type="text" class="item name" style="width: 106px;" value="姓名" />
<script>
var name = document.getElementsByClassName("name")[0];
name.addEventListener("input", function() {
console.log(name.value);
});
</script>
</body>
</html>
```
在输入框中输入内容时,可以在控制台中看到实时输出的值。
阅读全文