gpt4 book ai didi

javascript - oninput 事件触发一次。也可能存在范围问题

转载 作者:行者123 更新时间:2023-12-03 12:46:42 25 4
gpt4 key购买 nike

晚上好,

我在修改测试对象中的日期值时遇到问题。 oninput 事件似乎只在加载文档时触发一次。当日期更改时,oninput 事件似乎不会触发。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script>

var TestObj = new function(){

this.date = "2014-01-01";

this.LoadMenu = function() {
var newDateInput = document.createElement('input');
newDateInput.type = "date";
newDateInput.value = this.date;
document.getElementById("container").appendChild(newDateInput);
newDateInput.oninput = this.updateDate(newDateInput.value);
};

this.updateDate = function (newDate){
this.date = newDate;
alert(this.date);
document.getElementById("outputBox").innerHtml = this.date;
};
};

</script>
</head>
<body onload="TestObj.LoadMenu();">
<div id="container">
<div id="outputBox">Test</div>
</div>

Chrome:34.0.1847.116

最佳答案

这是由于您尝试关联事件处理函数的方式造成的,在您的代码中:

newDateInput.oninput = this.updateDate(newDateInput.value);

但你可能想要的是:

newDateInput.oninput = this.updateDate;

此外,如果您希望其正常工作,您可能需要在外部范围(“类”的范围内)中声明 newDateInput

我认为你想做的是这样的:

var TestObj = new function(){

this.date = "2014-01-01";
var newDateInput;

this.LoadMenu = function() {
newDateInput = document.createElement('input');
newDateInput.type = "date";
newDateInput.value = this.date;
document.getElementById("container").appendChild(newDateInput);
newDateInput.oninput = this.updateDate;
};

this.updateDate = function (event){
this.date = newDateInput.value;
alert(this.date);
document.getElementById("outputBox").innerHTML = this.date + '';
};
};

请告诉我这是否适合您。

关于javascript - oninput 事件触发一次。也可能存在范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23319133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com