Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式添加多个javascript事件-无内联javascript_Javascript - Fatal编程技术网

以编程方式添加多个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

以编程方式添加多个javascript事件

我已使用以下命令成功添加表单提交事件代码:

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);});