如何正确获取和设置time类型input输入框的value值?
取值报错修复
你触发报错的原因有两个:
getElementById()方法仅需传入id的纯文本值,不需要加#前缀,#是querySelector()系列方法的选择器语法,你传入#time1时会尝试查找id为#time1的元素,找不到就返回null,自然无法读取value属性。value是DOM元素的属性,不是方法,不需要加括号调用。
正确的取值代码如下:
console.log(document.getElementById("time1").value)
时间格式转换与赋值
type="time"的input仅支持24小时制的HH:mm格式作为输入值,带AM/PM的12小时制字符串无法直接赋值,需要先做格式转换,你可以用下面的转换函数处理:
// 入参为12小时制时间字符串,例如"06:00 AM"、"11:30 PM" function convertTimeTo24h(timeStr) { const [timePart, period] = timeStr.split(' ') let [hours, minutes] = timePart.split(':').map(Number) // 处理12小时制转24小时制逻辑 if (period.toUpperCase() === 'PM' && hours !== 12) hours += 12 if (period.toUpperCase() === 'AM' && hours === 12) hours = 0 // 补前导零后拼接为标准HH:mm格式 return `${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}` }
转换完成后直接赋值即可:
const targetTime = "06:00 AM" document.getElementById("time1").value = convertTimeTo24h(targetTime)
补充注意事项
- time类型input的value属性永远返回24小时制的
HH:mm格式字符串,取值时直接读取属性即可,不需要额外转换。 - 如果你的12小时制时间字符串存在其他格式变种,可以调整匹配逻辑拆分时间和时段标识即可。
内容的提问来源于stack exchange,提问作者John Phillip Abello
相关产品推荐
相关产品推荐

