Javascript 输入值赢得';不变

Javascript 输入值赢得';不变,javascript,tampermonkey,Javascript,Tampermonkey,当我在输入值中键入值时,我很难更改输入值 var t=document.createElement('div'); t、 innerHTML=''; document.getElementById(“新闻”).appendChild(t); var x=document.getElementById(“myText”).value//获取输入的值。 t、 onchange=function(){myFunction()}//输入。一旦改变。。 函数myFunction(){ console.l

当我在输入值中键入值时,我很难更改输入值

var t=document.createElement('div');
t、 innerHTML='';
document.getElementById(“新闻”).appendChild(t);
var x=document.getElementById(“myText”).value//获取输入的值。
t、 onchange=function(){myFunction()}//输入。一旦改变。。
函数myFunction(){
console.log(x);//记录“x”的值
}
  • “更改”事件仅在您离开输入字段时触发。您可能希望此处出现一个“input”事件,该事件会立即触发,并且侦听器已注册到
    oninput
  • x
    是一个仅初始化一次的变量,变量不绑定到用于初始化它们的任何对象的当前值,因此需要再次读取元素的值
  • 将函数直接绑定到事件,以便它可以使用
    this
    直接访问元素
  • 在输入元素而不是div上添加事件


  • 由于div上没有
    onchange
    ,所以它位于输入元素上

    onchangeonkeyup之间的差异。(MDN)

    onkeyup-当用户释放先前按下的键时,
    keyup
    事件触发

    所以,无论何时更改值,它都会被触发

    onchange-当用户向表单控件提交值更改时,将触发更改事件。例如,可以通过在控件外单击或使用Tab键切换到其他控件来完成此操作

    因此,除非您
    选项卡
    或在输入之外单击,否则不会调用您的函数

    您应该用以下代码替换代码

    var t=document.createElement('div');
    t、 innerHTML=“”
    document.getElementById(“新闻”).appendChild(t);
    var input=document.getElementById('myText');
    input.onkeyup=myFunction
    函数myFunction(){
    var x=document.getElementById(“myText”).value;//获取输入的值。
    console.log(x);//记录“x”的值
    }

    我们在div上没有
    onchange
    ,它在输入元素上。还要在函数中定义
    x
    变量以获得同步值,否则您将始终获得在onload事件期间(首次加载脚本时)计算的值定义元素?onkeyup不会在鼠标操作上运行,例如通过关联菜单选择/粘贴/剪切。我如何使用“this.value”作为变量。因此,我可以执行以下操作。console.log(this);这将=“this.value”的值,因此我可以在需要时将其与其他代码片段一起使用。
    this
    this.value
    只能在侦听器中使用,因此您需要将使用该值的所有代码也放在侦听器中。
    document.getElementById("myText").oninput = myFunction;
    
    function myFunction() {
      console.log(this.value)
    }