function confirmChange(button) { var row = button.parentNode.parentNode; var input = row.querySelector('input[type="date"]'); var span = input.parentNode.querySelector('span'); var value = input.value; span.innerHTML = value; input.setAttribute('data-value', value); input.style.display = 'none'; span.style.display = 'inline-block'; }
时间: 2023-06-24 14:03:08 浏览: 90
这是一个 JavaScript 函数,用于确认用户更改日期输入框中的值。当用户点击确认按钮时,该函数会获取到所在行的日期输入框和其对应的显示日期的 span 元素,然后将输入框中的值更新到 span 中,并且将输入框隐藏,将 span 显示出来。同时,将输入框中的值保存到其 data-value 属性中,以便后续使用。
相关问题
function confirmChange(button) { var row = button.parentNode.parentNode; var input = row.querySelector('input[type="date"]'); var span = input.parentNode.querySelector('span'); var value = input.value; span.innerHTML = value; input.setAttribute('data-value', value); input.style.display = 'none'; span.style.display = 'inline-block'; span.style.display = 'none'; // 隐藏之前添加的span元素 }执行时DOM元素没有加载到页面
如果该函数在页面加载完成之前被调用,则会出现该问题。为了避免这种情况,可以将该函数绑定到DOMContentLoaded事件上,以确保函数在页面完全加载后执行。例如:
```
document.addEventListener('DOMContentLoaded', function() {
function confirmChange(button) {
// 函数体...
}
});
```
另外,也可以将该函数放在一个单独的JavaScript文件中,并将其放在页面底部,以确保在DOM元素完全加载后才执行该函数。
function replaceDate(input) { var date = input.value; var text = new Date(date).toLocaleDateString(); var span = document.createElement('span'); span.innerHTML = text; input.parentNode.insertBefore(span, input); input.style.display = 'none'; input.setAttribute('data-value', date); } function restoreDate(button) { // 获取所在行 var row = button.parentNode.parentNode; // 获取该行的日期选择器 var input = row.querySelector('input[type="date"]'); // 恢复日期选择器 input.style.display = 'inline-block'; input.value = input.dataset.originalValue; // 移除提示信息 var span = input.parentNode.querySelector('span'); input.parentNode.removeChild(span); }正确吗
这段代码看起来是有问题的。首先,函数`replaceDate`中的`input`参数应该是一个DOM元素,而不是一个包含值的对象。其次,在`restoreDate`函数中,`input.dataset.originalValue`没有被定义,应该使用`input.getAttribute('data-value')`来获取之前保存的值。
阅读全文