You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JavaScript根据输入值调整对应HTML容器的文本颜色

问题:如何通用匹配数组元素对应的HTML容器ID来修改样式?

我编写了一段代码,从用户处获取10个整数和浮点数输入值:

var in1 = parseInt(document.getElementById("in1").value);
var in2 = parseInt(document.getElementById("in2").value);
var in3 = parseFloat(document.getElementById("in3").value);
var in4 = parseFloat(document.getElementById("in4").value);
var in5 = parseInt(document.getElementById("in5").value);
var in6 = parseInt(document.getElementById("in6").value);
var in7 = parseInt(document.getElementById("in7").value);
var in8 = parseFloat(document.getElementById("in8").value);
var in9 = parseFloat(document.getElementById("in9").value);
var in10 = parseInt(document.getElementById("in10").value);

随后我将所有输入值存入数组以便操作:

var arr = [in1, in2, in3, in4, in5, in6, in7, in8, in9, in10];

我的需求是遍历数组,将值为0的对应HTML容器的文本颜色设为红色,否则设为黑色:

for (let i = 0; i < arr.length; i++) {
    if (arr[i] === 0) {
        document.getElementById(/* 对应arr[i]的容器ID */).style.color = "red";
    } else {
        document.getElementById(/* 对应arr[i]的容器ID */).style.color = "black";
    }
}

当前仅指定单个容器ID(如"in1")时代码可运行,请问如何实现通用的对应容器匹配?


解决方案

方法1:绑定ID与值的对应关系

先创建存储ID和对应值的数组,把每个输入框的ID和解析后的值绑定在一起,遍历的时候直接拿到对应元素操作:

// 定义所有输入框ID
const inputIds = ['in1', 'in2', 'in3', 'in4', 'in5', 'in6', 'in7', 'in8', 'in9', 'in10'];

// 同时获取ID和对应解析后的值
const inputList = inputIds.map(id => {
    const value = document.getElementById(id).value;
    // 根据ID判断解析方式,也可以统一用parseFloat兼容整数和浮点数
    const parsedValue = ['in3','in4','in8','in9'].includes(id) ? parseFloat(value) : parseInt(value);
    return { id, value: parsedValue };
});

// 遍历修改样式
inputList.forEach(item => {
    const element = document.getElementById(item.id);
    element.style.color = item.value === 0 ? 'red' : 'black';
});

方法2:循环时直接构造ID

因为输入框ID是in+数字的规律命名,循环时可以通过索引直接拼接出对应ID:

// 先简化值的获取逻辑
const arr = [];
for (let i = 1; i <= 10; i++) {
    const id = `in${i}`;
    const value = document.getElementById(id).value;
    const parsedValue = [3,4,8,9].includes(i) ? parseFloat(value) : parseInt(value);
    arr.push(parsedValue);
}

// 遍历修改样式
for (let i = 0; i < arr.length; i++) {
    const targetId = `in${i + 1}`; // 数组索引从0开始,ID数字从1开始,需+1
    const element = document.getElementById(targetId);
    element.style.color = arr[i] === 0 ? 'red' : 'black';
}

方法3:合并值获取与样式修改逻辑

直接在一个循环里完成值解析和样式修改,无需单独存数组,代码更精简:

for (let i = 1; i <= 10; i++) {
    const id = `in${i}`;
    const element = document.getElementById(id);
    const value = element.value;
    const parsedValue = [3,4,8,9].includes(i) ? parseFloat(value) : parseInt(value);
    element.style.color = parsedValue === 0 ? 'red' : 'black';
}

内容的提问来源于stack exchange,提问作者Andrey Uebanovic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:25:40