我试图将一个事件动态地应用到我的应用程序的一个元素。
当我使用onclick
时,弹出一个警报:
el.setAttribute('onclick', 'alert("hi")',0);
当我尝试使用onkeypress
时,没有任何React:
el.setAttribute('onkeypress', 'alert("Hi");',0);
我真的需要有onkeypress
可用。有什么我做错了吗?setAttribute
不是实现我正在做的事情的最佳方式吗?如果是这样,我有什么替代方案来动态设置特定元素上的事件?
更新:
回答以下几个问题时,我这样做:
el.setAttribute('onkeypress','numericOverride(this)',0);
当我在Firebug中查看源代码时,我看到以下内容:
<div id="objSCR" class="txtbox" onmousedown="pfocus(this, '', '');" style="color:#0000FF; width:62px; height:12px; top:76px; left:120px; text-align:right; color:#0000FF;" ptmulti="false" pttype="E" ptlayndx="4" ptdisp="false" ppopup="" plength="12" onchange="numericOverride(this)">4000.00</div>
然而,当我改变文本的值时,我现在得到这个函数的输出:
function numericOverride(val){
console.log('hello');
}
当我尝试执行以下操作时:
el.onchange = function() { numericOverride(this) }
没有任何东西被添加到div中,也没有从函数中得到任何结果。
4条答案
按热度按时间r1zk6ea11#
试试这个(它的跨浏览器):
演示(注意jsfiddle在IE 7中运行不好):http://jsfiddle.net/mrchief/BQxWp/2/
已在Chrome、FF5、IE7(重试几次后)和IE9中测试。
uujelgoq2#
您要将事件处理程序附加到的元素类型是什么?只有以下标记支持onkeypress事件:
http://www.w3schools.com/jsref/event_onkeypress.asp
mf98qq943#
应该以正确的方式设置事件侦听器:
6gpjuf904#
您是否考虑过使用event listeners?
target.addEventListener("click", function() { alert("Hi"); })