当我在其中输入值时,很难更改输入值。
var t = document.createElement('div');
t.innerHTML = '<input type="text" id="myText">';
document.getElementById("news").appendChild(t);
var x = document.getElementById("myText").value; //Grabs the value of the input.
t.onchange = function(){myFunction()} //Input. Onchange..
function myFunction() {
console.log(x); //Logs the value of "x"
}
我的问题是当我在输入中键入一些字符串时。以“你好世界”为例。它应该在控制台上打印“ Hello world”。相反,它不打印任何内容。只是一个空白行。我该如何打印在输入框中输入的内容?
使用我的脚本。
答案 0 :(得分:2)
oninput
x
是仅初始化一次的变量,并且变量未绑定到用于初始化变量的当前值,因此您需要再次读取元素的值this
直接访问元素document.getElementById("myText").oninput = myFunction;
function myFunction() {
console.log(this.value)
}
答案 1 :(得分:1)
由于我们在div上没有onchange
,因此它在输入元素上。
更改和 onkeyup 之间的差异。 (MDN)
onkeyup —当用户释放先前按下的键时,将触发keyup
事件。
因此,无论何时更改值,它都会被触发。
onchange -当用户向表单控件提交值更改时触发change事件。例如,可以通过单击控件外部或使用Tab键切换到其他控件来完成此操作。
因此,除非您tab
或在输入之外单击,否则不会调用该函数。
您应将代码替换为以下内容。
var t = document.createElement('div');
t.innerHTML = '<input type="text" id="myText">'
document.getElementById("news").appendChild(t);
var input = document.getElementById('myText');
input.onkeyup = myFunction
function myFunction() {
var x = document.getElementById("myText").value; //Grabs the value of the input.
console.log(x); //Logs the value of "x"
}
<div id="news"/>