window.onload=function(){   
        document.getElementById("test1").onclick=function(){
alert();
};} 
</script>
<input type="button" id="test1" name="test"> 

解决方案 »

  1.   

    有区别吗
    ie6下  我没有试出来噢
    还有点疑问
    document.getElementById(window.event.srcElement.id).onclick
    不就是等于event.srcElement.onclick吗  (ie下)
      

  2.   

    window.event.srcElement   是指触发事件的对象
      

  3.   

    关于结构 和 行为  分离  是老生常谈了您可以考虑 使用2个方法 是专门给对象添加事件侦听的.
    一个是ie专有 一个w3c 标准方法即 node.addEventListener() //w3c 方法
       node.attachEvent() //ie方法你可以去查下这两个方法的 详细帮助
      

  4.   

    http://hi.baidu.com/qxjslm/blog/item/c07497301090049ca8018e6c.htmllook this 
      

  5.   

    需要判断当前用户操作的是input,还是select等.若是input,刚需要加上onclick事件
      

  6.   

    1 很显然
    window.onload这个时候window.event不存在 所以根本不会有window.event.srcElement.id一说了
    至于document.getElementById(id).onclick=function这样的写法是没有问题的2 document.getElementById(标签id)与document.getElementById(window.event.srcElement.id)
    假如你的事件是作用在一个控件上的时候 这样的写法是没有问题的
      

  7.   

    TO:xiaojing7 我看了你发出来的链接,我的写法错在:不应该是window.onload=function(){...}而是应该放在<body onclick="函数名"> 这样呢?
      

  8.   

    假如你仅仅是需要这样的判断
    那么大可以使用
    document.getElementsByTagName("input")的循环来做
      

  9.   


    <SCRIPT LANGUAGE="JavaScript">
    window.onload=function(){ var input = document.getElementsByTagName("input");
    for (var i=0;i<input.length ;i++ )
    {
    input[i].onclick=function(){alert(this.id)}
    }
    }
    </SCRIPT>
    <textarea></textarea>
    <input type="text" id="test" name="test">
    <input type="text" id="test1" name="test">
    <input type="text" id="test2" name="test">
      

  10.   

    我测试了,你这种写法与我的要求有点区别,应该是我没有描述清。我的本意是:
    页面上有很多标签如(input,select等),用户在文本框中输入内容后,需要触发一个验证函数来验证用户输入的是否正确。所以我想到了window.event.srcElement
      

  11.   

    我测试了,你这种写法与我的要求有点区别,应该是我没有描述清。我的本意是:
    页面上有很多标签如(input,select等),用户在文本框中输入内容后,需要触发一个验证函数来验证用户输入的是否正确。所以我想到了window.event.srcElement
      

  12.   

    也可以在onclik的时候加上事件去判断
    <script>
    document.onclick=function(event){ss(event)}
    function ss(e){
    e=e||event
    var obj =e.srcElement||e.target
    if(obj.type=="text")
    {obj.onclick=haha;haha()}
    }function haha(){alert("a")}
    </script>
    <input value="123" type="text" id="test1" > 
    <input  value="234" type="text" id="test2" > 
    <input type="password" id="test3" > 
      

  13.   

    如果所有的input都触发一个事件可以用 getElementsByTagName('input')得到页面所有 input或getElementsByTagName('select')
    比如
    <script>
    onload = function(){
    var inps = document.getElementsByTagName('input');
    for(var i=0; i<inps.length; i++)
    inps[i].onclick = function(){
    alert(this.value);
    } var sels = document.getElementsByTagName('select');
    for(var i=0; i<sels.length; i++)
    sels[i].onclick = function(){
    alert(this.options[0].text);
    }
    }
    </script>
    <input type="text" value="01" /> <select><option>aaa</option></select><br />
    <input type="text" value="02" /> <select><option>bbb</option></select><br />
    <input type="text" value="03" /> <select><option>ccc</option></select>
      

  14.   

    如果事件处理函数只需要赋值一次的话,使用匿名函数
    window.onload=function(e){
        document.getElementById("test").onclick=function(e){
             e = e || windows.event; // 为了兼容IE/Firefox
             ......
        }
    } 或者,像下面这样,这样做的好处是,
    你可以在需要的时候反复的引用这个函数。window.onload=function(e){
        document.getElementById("test").onclick=dealClick;
    }function dealClick(e){
        e = e || windows.event; // 为了兼容IE/Firefox
        ......
    } 另外,W3C推荐使用的方法是 addEventListener, IE下为attachEvent
    例:
    if(document.all)  //IE
      document.getElementById("test").attachEvent("onclick",method1);
    else        //firefox
      document.getElementById("test").addEventListener("click",method1,false);
    问题2:
    document.getElementById(标签id)与document.getElementById(window.event.srcElement.id)的区别在哪里?
     
    只有ID名字不同,
    window.event.srcElement, 首先这是IE下的写法,window.event是事件发生时的事件对象,
    在firefox下,这个对象只能通过事件处理函数的第一个参数传递给函数。
    srcElement 是对于生成事件的 Window 对象、Document 对象或 Element 对象的引用。
    因此
    window.event.srcElement.id是指生成当前事件的对象的ID,
    不过这里既然你已经获得了对象的句柄,也就没有必要再通过getElementById来查询了。
    也就是说,
    document.getElementById(window.event.srcElement.id) == window.event.srcElement;推荐你去看一看相应的文档。
    http://www.w3school.com.cn/htmldom/dom_obj_event.asp
      

  15.   

    我要的就是这样,但还有点疑问,haha函数中,我需要加入参数,怎么办?像haha(obj)这样。
      

  16.   

    TO:wtcsy 
    我要的就是这样,但还有点疑问,haha函数中,我需要加入参数,怎么办?像haha(obj)这样。 
      

  17.   

    <script>
    document.onclick=function(event){ss(event)}
    function ss(e){
    e=e||event
    var obj =e.srcElement||e.target
    if(obj.type=="text")
    {obj.onclick=function(obj){haha(obj)}
    haha(obj);}}function haha(e){alert(e.value)}
    </script>
    <input value="123" type="text" id="test1" > 
    <input  value="234" type="text" id="test2" > 
    <input type="password" id="test3" > 
      

  18.   

    我估计这样就行了
    if(obj.type=="text")
       haha(obj)这个
    if(obj.type=="text")
    {obj.onclick=function(obj){haha(obj)}
    haha(obj);}是错的吧要obj.onclick=function(){haha(this)}传
      

  19.   

    很好,要传this
      

  20.   

    是这样<SCRIPT LANGUAGE="JavaScript">
    window.onload=function(){ var input = document.getElementsByTagName("input");
    for (var i=0;i<input.length ;i++ )
    {
    if(input[i].type=="text")
    input[i].onclick=function(){haha(this)}
    }
    }
    function haha(obj)
    {
    alert(obj.value)
    }
    </SCRIPT>
    <textarea></textarea>
    <input type="text" id="test" name="test">
    <input type="text" id="test1" name="test">
    <input type="text" id="test2" name="test">还是<script>
    document.onclick=function(event){ss(event)}
    function ss(e){
    e=e||event
    var obj =e.srcElement||e.target
    if(obj.type=="text")
    haha(obj);}function haha(e){alert(e.value)}
    </script>
    <input value="123" type="text" id="test1" > 
    <input  value="234" type="text" id="test2" > 
    <input type="password" id="test3" > 
      

  21.   

    莫非你要<script>
    document.onclick=function(event){ss(event)}
    function ss(e){
    e=e||event
    var obj =e.srcElement||e.target
    if(obj.type=="text")
    {
    obj.onclick=function(){haha(this)};//赋一个onclick方法
    haha(obj);//直接运行方法
    }
    function haha(e){alert(e.value)}
    </script>
    <input value="123" type="text" id="test1" > 
    <input  value="234" type="text" id="test2" > 
    <input type="password" id="test3" > 看注释就知道了
    结果是第一次点的时候alert一次 
    以后点alert两次
      

  22.   

    按上面各位的指点,问题已解决,一小时后结贴。向大家学到了不少东西。
    略问下:
    上面的高手,平时写js代码,用什么工具呀?用vs.net2005 / vs.net2008的智能提示能力还是太差了。调试又是用什么工具呢?若是用ff,要是把js抽成一个文件,好像调试不到抽出来的文件。说说看。谢谢
      

  23.   

    aptana + firebugs 很好用,
    再找一个正则表达式的调试工具。
    我用的是 RegexBuddy 3
      

  24.   

    我用 editplus 有代码高亮和找错误的行号
    怎么调不到呢? 错误控制台里可以看到错误出来那里啊 ff下调试有firebug 很不错 可以设断点 不过我几乎不用
      

  25.   

    发现有一个小bug,从文本框1到文本框2, 若是用tab键,根本就没有触发。若是单击倒是可以。用户按tab键这种情况怎么办?
      

  26.   

    eee  
    把obj.onclick改为obj.onfocus
      

  27.   

    如果用var obj =e.srcElement||e.target
    这样的方式 那还要改改
      

  28.   


    <script>
    document.onclick=function(event){ss(event)}
    document.onkeyup=function(e){
    e=e||event
    var key = e.charCode||e.keyCode
    if(key==9)
    ss(e)
    }
    function ss(e){
    e=e||event
    var obj =e.srcElement||e.target
    if(obj.type=="text")
    {
    obj.onclick=function(){haha(this)};//赋一个onclick方法
    haha(obj);//直接运行方法
    }
    }
    function haha(e){alert(e.value)}
    </script>
    <input value="123" type="text" id="test1" > 
    <input  value="234" type="text" id="test2" > 
    <input type="password" id="test3" > 
      

  29.   

    obj.onfocus是不行的,用tab定位到文本框中,但用户没有输入任何内容,又按tab离开了当前文本框。应该要提示用户“需输入内容”
      

  30.   


    <script>
    document.onclick=function(event){ss(event)}
    document.onkeydown=function(e){
    e=e||event
    var key = e.charCode||e.keyCode
    if(key==9)
    ss(e)
    }
    function ss(e){
    e=e||event
    var obj =e.srcElement||e.target
    if(obj.type=="text")
    {
    //obj.onclick=function(){haha(this)};//这个还要??
    haha(obj);
    }
    }
    function haha(e){alert(e.value)}
    </script>
    <input value="123" type="text" id="test1" > 
    <input  value="234" type="text" id="test2" > 
    <input type="password" id="test3" >