JavaScript动态设置属性

unftdfkk  于 2023-01-16  发布在  Java
关注(0)|答案(4)|浏览(194)

我试图将一个事件动态地应用到我的应用程序的一个元素。
当我使用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中,也没有从函数中得到任何结果。

r1zk6ea1

r1zk6ea11#

试试这个(它的跨浏览器):

function keyPressHandler() { alert("Hi"); };

if (el.addEventListener) {
   el.addEventListener("keypress", keyPressHandler, true);
}
else if (el.attachEvent) {
   el.attachEvent("onkeypress", keyPressHandler);
}
else {
   el.onkeypress = keyPressHandler;
}

演示(注意jsfiddle在IE 7中运行不好):http://jsfiddle.net/mrchief/BQxWp/2/
已在Chrome、FF5、IE7(重试几次后)和IE9中测试

uujelgoq

uujelgoq2#

您要将事件处理程序附加到的元素类型是什么?只有以下标记支持onkeypress事件:

<a>, <acronym>, <address>, <area>, <b>, <bdo>, <big>, <blockquote>, <body>, <button>,
<caption>, <cite>, <code>, <dd>, <del>, <dfn>, <div>, <dt>, <em>, <fieldset>, <form>,
<h1> to <h6>, <hr>, <i>, <input>, <kbd>, <label>, <legend>, <li>, <map>, <object>, <ol>,
<p>, <pre>, <q>, <samp>, <select>, <small>, <span>, <strong>, <sub>, <sup>, <table>,
<tbody>, <td>, <textarea>, <tfoot>, <th>, <thead>, <tr>, <tt>, <ul>, <var>

http://www.w3schools.com/jsref/event_onkeypress.asp

mf98qq94

mf98qq943#

应该以正确的方式设置事件侦听器:

el.onkeypress = function() { alert("HI") }
6gpjuf90

6gpjuf904#

您是否考虑过使用event listeners
target.addEventListener("click", function() { alert("Hi"); })

相关问题