Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何模拟用户在输入和按钮元素上的交互?_Javascript_Html_Angular - Fatal编程技术网

Javascript 如何模拟用户在输入和按钮元素上的交互?

Javascript 如何模拟用户在输入和按钮元素上的交互?,javascript,html,angular,Javascript,Html,Angular,我这里有一个代码 基本上有一个简单的表单,带有一个输入和一个按钮。按下按钮将把输入的当前值复制到标签上: 单击后: html: 我必须只使用本机JS代码模拟用户交互。 因此,我尝试以下方法(例如在浏览器控制台中): 问题是: 我得到了标签中的默认值,而不是当前值。如何获得正确的值?我怀疑这是周围的东西,但无法找出这里的问题所在 更新:我尝试了以下方法,但也没有成功 element = document.getElementById('inputID') element.value = "a

我这里有一个代码

基本上有一个简单的表单,带有一个输入和一个按钮。按下按钮将把输入的当前值复制到标签上:

单击后:

html:

我必须只使用本机JS代码模拟用户交互。 因此,我尝试以下方法(例如在浏览器控制台中):

问题是:

我得到了标签中的默认值,而不是当前值。如何获得正确的值?我怀疑这是周围的东西,但无法找出这里的问题所在

更新:我尝试了以下方法,但也没有成功

element = document.getElementById('inputID')
element.value = "aNewValue"; 
var ev = new Event('change', {
    view: window, 
    bubbles: true,
    cancelable: true,
  });
element.dispatchEvent(ev);
document.getElementById('buttonID').click();

Angular会在
输入
事件时更新模型。您应该在设置值后手动触发它

inputElement=document.getElementById('inputID');
ButtoneElement=document.getElementById('buttonID');
inputElement.value=“aNewValue”;
inputElement.dispatchEvent(新事件('input'){
视图:窗口,
泡泡:是的,
可取消:正确
}))
按钮元素。单击();

这不会发生,因为模型未更新。angular不知道您在使用dom propertyYeah做什么,我也这么怀疑,但我如何才能模拟交互,让应用程序注意到输入字段中的更改?很遗憾,我无法使用jQuery,也无法触发输入更改事件。。。我甚至不确定Angular2+中是否相同。这非常有效,谢谢。对于任何有相同问题的人来说:重要的是要理解,在不同的框架中,在幕后传播更改的事件类型可能不同。(“变更”事件为例)
  labelValue = "";
  inputValue = "defaultValue";

  set(){
    this.labelValue = JSON.parse(JSON.stringify(this.inputValue));
  }
 - document.getElementById('inputID').value = "aNewValue"; 
 - document.getElementById('buttonID').click();
element = document.getElementById('inputID')
element.value = "aNewValue"; 
var ev = new Event('change', {
    view: window, 
    bubbles: true,
    cancelable: true,
  });
element.dispatchEvent(ev);
document.getElementById('buttonID').click();