3 回答

TA贡献1798条经验 获得超7个赞
创建一个Event对象并将其传递给dispatchEvent元素的方法:
var element = document.getElementById('just_an_example');
var event = new Event('change');
element.dispatchEvent(event);
这将触发事件侦听器,无论它们是通过调用addEventListener方法还是通过设置onchange元素的属性进行注册的。
如果您希望事件冒泡,请将第二个参数传递给Event构造函数:
var event = new Event('change', { bubbles: true });

TA贡献2065条经验 获得超14个赞
由于某种原因,ele.onchange()在我的页面上的IE中为我抛出了“未找到方法”的假象,因此我最终使用了Kolten提供的链接中的此函数,并调用了fireEvent(ele,'change'), :
function fireEvent(element,event){
if (document.createEventObject){
// dispatch for IE
var evt = document.createEventObject();
return element.fireEvent('on'+event,evt)
}
else{
// dispatch for firefox + others
var evt = document.createEvent("HTMLEvents");
evt.initEvent(event, true, true ); // event type,bubbling,cancelable
return !element.dispatchEvent(evt);
}
}
但是,我确实创建了一个测试页面,该页面确认调用应该onchange()起作用:
<input id="test1" name="test1" value="Hello" onchange="alert(this.value);"/>
<input type="button" onclick="document.getElementById('test1').onchange();" value="Say Hello"/>
编辑:ele.onchange()不起作用的原因是因为我实际上没有为onchange事件声明任何东西。但是fireEvent仍然有效。
添加回答
举报