首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态javascript setAttribute

动态javascript setAttribute
EN

Stack Overflow用户
提问于 2011-08-11 04:39:05
回答 4查看 3.4K关注 0票数 1

我正在尝试将元素的事件动态应用到我的应用程序中。

当我使用onclick时,我得到了一个弹出的警告。

代码语言:javascript
复制
el.setAttribute('onclick', 'alert("hi")',0);

当我尝试使用onkeypress时,没有任何反应。

代码语言:javascript
复制
el.setAttribute('onkeypress', 'alert("Hi");',0); 

我真的需要有可用的onkeypress。我是不是做错了什么?setAttribute不是实现我正在做的事情的最好方法吗?如果是这样的话,在特定元素上动态设置事件的替代方法是什么?

更新:

当我这样做时,回答以下几个问题:

代码语言:javascript
复制
el.setAttribute('onkeypress','numericOverride(this)',0);

当我在Firebug中查看源代码时,我看到了以下内容:

代码语言:javascript
复制
<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>

但是,当我更改现在从该函数输出的文本的值时:

代码语言:javascript
复制
function numericOverride(val){
        console.log('hello');
}

当我尝试执行以下操作时:

代码语言:javascript
复制
el.onchange = function() { numericOverride(this) } 

没有任何东西被添加到div中,我也没有从函数中得到任何结果。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-08-11 04:58:11

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

代码语言:javascript
复制
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演示(注意jsfiddle在IE7中不能很好地播放):http://jsfiddle.net/mrchief/BQxWp/2/

在Chrome,FF5,IE7 (几次重试后)和IE9上测试了

票数 2
EN

Stack Overflow用户

发布于 2011-08-11 04:44:00

您尝试将事件处理程序附加到的元素类型是什么?onkeypress事件仅受以下标签支持:

代码语言:javascript
复制
<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

票数 2
EN

Stack Overflow用户

发布于 2011-08-11 04:40:05

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

代码语言:javascript
复制
el.onkeypress = function() { alert("HI") }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7017477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档