javascript - onchange 不适用于按类名选择的输入字段
问题描述
当我按类名选择输入字段元素时,onchange 事件不起作用。我想更改当前更改的输入字段的值。代码如下:
// change current input field
function upperCase() {
// change current change input field
let x = document.getElementsByClassName('fname');
x.value = x.value.toUpperCase();
}
// call function when current element change
document.getElementsByClassName('fname').onChange = upperCase;
<input type="text" class="fname">
<input type="text" class="fname">
<input type="text" class="fname">
<input type="text" class="fname">
拜托,我还想更改当前更改输入字段的值。
解决方案
document.getElementsByClassName
返回元素的集合,但您正试图像访问单个元素一样访问该值。
您需要访问每个单独的元素,如下所示:
let inputs = document.getElementsByClassName('fname');
inputs[0].value = inputs[0].value.toUpperCase();
甚至更好的是循环它们:
let inputs = document.getElementsByClassName('fname');
for (let i of inputs) {
i.value = i.value.toUpperCase();
}
编辑以添加事件它应该是相同的想法:
function upperCase() {
// change current change input field
let inputs = document.getElementsByClassName('fname');
for (let i of inputs) {
i.value = i.value.toUpperCase();
}
}
let inputs = document.getElementsByClassName('fname');
for (let i of inputs) {
i.addEventListener('change', upperCase);
}
<input type="text" class="fname">
<input type="text" class="fname">
<input type="text" class="fname">
<input type="text" class="fname">
推荐阅读
- sql - oracle比率与案例报告?
- sql - 在 Microsoft SQL Server 中将文本拆分为行
- java - 如何在android状态栏上写字
- python - 将多处理应用于 pandas 数据框中唯一类别的条目的最有效方法是什么?
- sql-server - 用户在更新数据库后无权执行此操作实体框架
- mongodb - mongo 聚合框架按季度/半年/年分组
- javascript - 热图不适用于 FeatureLayer (ArcGIS JS API 4.8)
- django - Django ORM 问题:2 个不同视图上的相同查询集以截然不同的速度运行
- ruby-on-rails - 如何从 Rails 4 中的一组 yaml 文件中选择一个 yaml 文件?
- sql-server - 将参数传递到单引号 TSQL 脚本中