2016-03-10 80 views
2

这是我的代码:为什么此附加事件侦听器未执行?

​​

控制台只是显示一个Executed甚则textContent不会改变。

编辑

这个代码版作品:

myinp.addEventListener("input", update, false); 

function update() { 
    thumb.style.left= this.value + "%"; 
    if(this.value>0) { 
    thumb.textContent= this.value; 
    } else { 
    thumb.textContent= null; 
    } 
} 

当我不传递任何参数,为什么this参考要素,而不是窗户就像在第一种情况?

+2

你尝试调试代码?检查你的函数执行的范围,看看'this'指向哪里。您需要了解Javascript范围的工作原理。 – CuriousMind

+0

什么样的事件输入是?输入是一个元素,而不是一个事件 –

+0

@MarcosPérezGude[这个演示](http://codepen.io/abhisack/pen/WvLXdd)作品有“输入”。有什么解释吗? –

回答

3

的问题是,update函数在全局上下文(window)执行。如果你想this为输入情况下,你需要明确地提供上下文:

myinp.addEventListener("input", function() { 
    update.call(this, store); 
}, false); 

请记住,执行上下文取决于调用该函数的方式。在你的情况update被隐含势必因此调用它像update()全局对象总是有thiswindow

+0

你好@dfsq,你能告诉我们什么'input'事件是? –

+1

@MarcosPérezGudehttps://developer.mozilla.org/en-US/docs/Web/Events/input –

+0

@dfsq你的建议的工作!谢谢:) 这是如何工作,当我不通过任何参数?我正在更新问题以添加另一个版本的相同功能,但没有任何参数。我需要知道对JavaScript有更好的理解。 –

相关问题