以编程方式添加多个javascript事件-无内联javascript
以编程方式添加多个javascript事件 我已使用以下命令成功添加表单提交事件代码:以编程方式添加多个javascript事件-无内联javascript,javascript,Javascript,以编程方式添加多个javascript事件 我已使用以下命令成功添加表单提交事件代码: if (window.addEventListener){ window.addEventListener('load', attachFormSubmit, false); }else if (window.attachEvent){ window.attachEvent('onload', attachFormSubmit ); } function attachF
if (window.addEventListener){
window.addEventListener('load', attachFormSubmit, false);
}else if (window.attachEvent){
window.attachEvent('onload', attachFormSubmit );
}
function attachFocus()
{
var txt = document.getElementById("text1");
if (txt.addEventListener){
txt.addEventListener('focus', ClearText(txt.id), false);
}else if (txt.attachEvent){
txt.attachEvent('focus', ClearText(this.id));
}
}
function ClearText(id)
{
var obj = document.getElementById(id);
obj.value='';
}
现在我在text1页面上有一个文本框,我想在它聚焦时清除它的值
我尝试添加以下内容:
if (window.addEventListener){
window.addEventListener('load', attachFormSubmit, false);
}else if (window.attachEvent){
window.attachEvent('onload', attachFormSubmit );
}
function attachFocus()
{
var txt = document.getElementById("text1");
if (txt.addEventListener){
txt.addEventListener('focus', ClearText(txt.id), false);
}else if (txt.attachEvent){
txt.attachEvent('focus', ClearText(this.id));
}
}
function ClearText(id)
{
var obj = document.getElementById(id);
obj.value='';
}
我在窗口加载事件中添加了对attachFocus的调用:
if (window.addEventListener){
window.addEventListener('load', attachFormSubmit, false);
window.addEventListener('load', attachFocus, false);
}else if (window.attachEvent){
window.attachEvent('onload', attachFormSubmit );
window.attachEvent('onload', attachFocus );
}
因此,我为textbox焦点事件添加的代码不起作用。有人能指出我做错了什么,并推荐一种通过javascript添加事件的更好方法吗。当您编写
明文(txt.id)
您没有传递函数
您正在调用函数
你应该写:
txt.attachEvent('focus', function() {clearText(txt.id);});
或:
您是否尝试过使用onclick而不是onfocus,看看这是否有效?jquery和option是否有效?如果你已经使用了最好的方法,那么这会更容易。但是,
addEventListener
需要一个函数作为参数,而不是从ClearText
返回的undefined
。不过,对于load
来说,您已经正确地完成了这项操作。附加focus
时,IE代码中的事件名称中也缺少“on”
。我发现您在一个位置有txt.id
,在另一个位置有this.id
。也许这就是问题所在。txt
在函数attachFocus中只有作用域,是不是this.id
更合适?如果您相应地更改clearText
函数,例如function clearText(){this.value='''';},您也可以选择执行txt.addEventListener('focus',clearText)
.Matt Browne,你的建议适用于较新的浏览器,我使用了addEventListener,但对于较旧浏览器的attachEvent,当我使用txt.attachEvent('onfocus',function(){ClearText(txt.id);})时,在ClearText函数中,“this”是未定义的;txt.id显示为undefinedOK,我通过切换txt.attachEvent('focus',function(){ClearText(txt.id);})使其工作;到txt.attachEvent('onfocus',function(){ClearText(txt);});