Javascript:如何在onChange事件期间更改日期时间值
Javascript: How to change datetime value during onChange event?
用户更改下拉列表的值时,我都需要更改输入框的值。该值应该是"当前日期时间",我无法使其工作。使用下面的代码,每次我更改特定行的下拉值(例如在第 3 行中(时,所有行中输入框的值(当前日期时间(都会受到影响。它们具有相同的当前日期时间值。其他行的"当前日期时间"值不应更改。仅用户更改下拉列表的行。我在这里错过了什么吗?顺便说一下,我必须使用 DOM。
<table id="myTable">
<tr>
<td>Value to Select: <select onChange="changeDateTime();"></select></td>
<td>Current Date Time: <input/></td>
</tr>
</table>
Javascript:
function changeDateTime(){
var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var currentDateTime = date+' '+time;
var d = id('myTable', document);
for (var x=1; x<d.rows.length; x++) {
d.rows[x].cells[2].firstChild.value = currentDateTime;
}
}
查看下面的代码片段。
function changeDateTime(obj) {
var today = new Date();
var date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var currentDateTime = date + ' ' + time;
var _input = obj.parentNode.nextElementSibling.getElementsByTagName('input')[0]
_input.value = currentDateTime;
}
<table id="myTable">
<tr>
<td>Value to Select:
<select onChange="changeDateTime(this);">
<option>1</option>
<option>2</option>
</select>
</td>
<td>Current Date Time:
<input/>
</td>
</tr>
<tr>
<td>Value to Select:
<select onChange="changeDateTime(this);">
<option>3</option>
<option>4</option>
</select>
</td>
<td>Current Date Time:
<input />
</td>
</tr>
</table>
这里看起来不对的第一件事是你应该从 0 索引开始
for (var x=0; x<d.rows.length; x++) {
d.rows[x].cells[2].firstChild.value = currentDateTime;
}
我已经在您的 HTML 中做了一些更改,以将一些数据放在您的选择列表中。见下文:
<table id="myTable">
<tr>
<td>Value to Select: <select onchange="javascript:changeDateTime();">
<option>-- select --</option><option>ShowDate</option>
</select></td>
<td>Current Date Time: <input id="txtDate"/></td>
</tr>
</table>
此外,对javascript函数进行了一些更改,该函数通过按id获取文本框在文本框中显示日期时间。
function changeDateTime(){
var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var currentDateTime = date+' '+time;
document.getElementById('txtDate').value = currentDateTime;
}
小提琴
希望它对你有用!
记住数组从 0 开始,所以你的脚本应该看起来像这样
var d = document.getElementById("myTable");
for (var x=0; x<d.rows.length; x++) {
d.rows[x].cells[1].lastChild.value = currentDateTime;
}
输入字段也不是firstChild
。
工作示例
注意:
这样,您可以更改每行中的日期,不知道是否要这样做。如果没有,我会使用普加什的答案。
您正在使用 firstChild,您真正需要的是 firstElementChild 属性。有几种类型的节点可用,您正在寻找的是 Element 类型的节点。
你的代码不起作用的原因是(除了数组索引应该从 0 开始,所以 x=0
和 cell[1]
(实际上是 firstChild 是文本类型的节点,而不是输入元素节点。也不要使用lastChild,因为您不知道是否会有一个空文本节点。
类属性设置为输入标签,可能有一种更简单的方法,因此您可以使用getElementsByClassName((函数。
如果您仍然想走这条路,这里是解决方案。纠正这个循环,你没事。
for (var x=0; x<d.rows.length; x++) {
d.rows[x].cells[1].firstElementChild.value = currentDateTime;
}
- 更改angularjs中的日期-时间格式
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 将日期时间从json转换为可读格式
- 使用时刻.js从日期时间中提取时间
- 两个日期时间选择器
- Javascript:如何在onChange事件期间更改日期时间值
- .Net webApi ISO日期时间和IE8
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 转换日期时间格式
- 在JavaScript中转换日期/时间格式
- JavaScript JSON关联对象键和值都作为日期时间戳
- 将日期时间javascript绑定到表列
- 将JS日期解析为C#日期时间
- 使用JavaScript将客户端日期/时间字符串转换为JSON日期/时间串
- 从javascript数组获取php的日期时间
- 格式化momentjs日期时间
- 这个正则表达式的日期/时间有什么问题
- Mongoose查询在两个日期时间之间提取数据
- 当转换为Python日期时间时,Node的时间戳落后3分钟
- 自定义angularjs过滤器日期时间格式额外字符