Javascript:更新<select>值时触发'更改'eventlistener

时间:2017-01-07 12:37:01

标签: javascript event-listener

注意:不使用jQuery,在将其标记为重复之前,请确保其他Q / A是纯JS。 我设置了这样的事件监听器,当通过html触发时它非常有效: document.getElementById('activitySelector')。addEventListener('change',function(){   console.log(“我的工作是由html触发而不是js”) } 我正在添加其他功能,我通过javascript更改选择值,这适用于html更新,但eventListener永远不会被触发: document.getElementById(“activitySelector”)。value = interactiveType

2 个答案:

答案 0 :(得分:1)

要实现您的目标,您应该手动创建事件并调度它。这不难,你可以在这里看到:http://www.2ality.com/2013/06/triggering-events.html?m=1

答案 1 :(得分:1)

这是我最初的解决方案。只需让事件处理程序触发您的代码作为函数包装。这样,你可以通过javascript更新时调用相同的函数。

正如@dfsq所指出的,这就是它的工作原理。手动触发事件可能需要比此方法更多的代码:

// All code originally in eventListener now in function
function onActivityChange() {
  console.log("I work triggered by html and js")
}

// Call above function from eventlistener
document.getElementById('activitySelector').addEventListener('change', onActivityChange)

// Trigger same function after updating value
document.getElementById("activitySelector").value = interactiveType
onActivityChange()