var a = document.createElement("A");
a.href = "#";
a.onclick = function(){alert("a")} //在DHTML里应该使用obj.event而不是attribute
document.body.appendChild(a);

解决方案 »

  1.   

    晕,还是没有反应,而且firefox也没反应了
      

  2.   

    <body><SCRIPT LANGUAGE="JavaScript">
    <!--
    var a = document.createElement("A");
    a.href = "#";
    a.onclick = function(){alert("a"); return false;} 
    a.innerHTML = "meizz";
    document.body.appendChild(a);
    //-->
    </SCRIPT>我测试了一下,一点问题都没有呀(IE FF)
      

  3.   

    ie下提示的内容:
    ---------------------------
    Microsoft Internet Explorer
    ---------------------------
    <TBODY><TR><TD align=middle><A onclick="javascript:alert('hehe')" href="javascript:void(0)">主目录</A></TD><TD align=middle><A onclick="javascript:alert('hehe')" href="javascript:void(0)">分类1</A></TD></TR><TR id=level1><TD align=middle colspan="2"></TD></TR></TBODY>
    ---------------------------
    确定   
    ---------------------------firefox提示的内容:---------------------------
    Microsoft Internet Explorer
    ---------------------------
    <TBODY><TR><TD align=middle><A onclick="javascript:alert('hehe')" href="javascript:void(0)">主目录</A></TD><TD align=middle><A onclick="javascript:alert('hehe')" href="javascript:void(0)">分类1</A></TD></TR><TR id=level1><TD align=middle colspan="2"></TD></TR></TBODY>
    ---------------------------
    确定   
    ---------------------------就是没反应!!!
      

  4.   

    firefox提示的内容有错,超级连接里没有onclick事件
      

  5.   

    js代码:
    /************************************************************************
    * Author:zx
    *  Time:2006.1.22 22:17
    *  File name:menus.js
    *  Version:1.0
    ************************************************************************/function ajaxMenu(  )
    {
    /*
    * 功能:
    *   建立ajaxMenu对象
    * 保留HTML ID:
    *   以level开头后跟数字的ID,如:level0
    */

    this.ajax = ajax;
    this.ajax();
    this.open = mOpen;

    this.ajaxEnd();
    base = 0;
    idPrefix = "level";
    states = new Array( "未初始化","读取中","已读取","交互中","完成" );
    space = navigator.appName.toUpperCase()=="NETSCAPE" ? 1 : 0;
    }function mOpen( id , url , mode , action )
    {
    /*
    * 继承:
    *   ajax.aOpen
    * 参数:
    *   当前记录的id
    */

    base = id;
    show = getLastedNode( document.getElementById( idPrefix+base ) );
    aOpen( url , mode , action );
    }function getLastedNode( elem )
    {
    /*
    * 功能:
    *   处理服务器返回的信息
    * 类型:
    *   内部方法
    * 参数:
    *   element对象
    */

    var newElement = elem;

    try
    {
    if( newElement.childNodes[space].nodeType == 3 )
    {
    return( newElement );
    }

    newElement = getLastedNode( newElement.childNodes[space] );
    }
    catch(e)
    {
    return( false );
    }

    return( newElement ? newElement : elem );
    }function pross()
    {
    /*
    * 功能:
    *   处理服务器返回的信息
    * 类型:
    *   内部方法
    * 前提:
    *   不可单独调用,需继承本程序内置的ajax对象.childNodes[space]
    */

    with( request )
    {
    if( readyState==4 && status==200 )
    {
    var data = responseXML;
    var objects = data.getElementsByTagName( "mains" )[0].childNodes;
    var len = objects.length;
    var attribute = new Array();
    var tr = create( "tr" , attribute , "" );
    var tbody = create( "tbody" , attribute , tr );

    attribute[0] = "width=100%";
    attribute[1] = "border=0";
    attribute[2] = "cellspacing=0";
    attribute[3] = "cellpadding=0";
    var tbs = create( "table" , attribute , tbody ); for( var i=space ; i<len ; i += (1+space) )
    {
    //attribute[1] = "onclick=javascript:alert('hehe');"; list("+(base+1)+","+objects[i].getAttribute("id")+")
    var a = createALink( objects[i].getAttribute("value") , "javascript:void(0)" , "javascript:alert('hehe')" );

    attribute = new Array();
    attribute[0] = "align=center";
    var td = create( "td" , attribute , a );
    tr.appendChild( td );
    }

    try
    {
    if( document.getElementById( idPrefix+(base+1) ) )
    {
    return;
    }
    else
    {
    attribute = new Array();
    attribute[0] = "align=center";
    attribute[1] = "colspan="+i;
    var td = create( "td" , attribute , "" );

    attribute = new Array();
    attribute[0] = "id="+idPrefix+(++base);
    var tr = create( "tr" , attribute , td );
    tbody.appendChild( tr );
    }
    }
    catch(e)
    {
    alert( "程序出错!" );
    }

    alert( tbs.innerHTML );
    show.innerHTML="";
    show.appendChild( tbs );
    }
    else
    {
    show.innerHTML = states[ readyState ];
    }
    }
    }function createALink( name , href , c )
    {
    var a = document.createElement( "a" );
    a.href = href;
    a.onclick = c;
    a.innerHTML = name;
    return( a );
    }function create( name , attribute , value )
    {
    /*
    * 功能:
    *   建立一个Element对象
    * 类型:
    *   内部方法
    * 参数:
    *   name对象名称
    *     attribute存放对象属性数组,数组格式:attribute[Num]="属性名=属性值";
    *   value对像值或子节点,空则表示无值或子节点
    */

    var element = document.createElement( name );
    var len = attribute.length;

    for( var i=0 ; i<len ; i++  )
    {
    var regExp = new RegExp( "(.*)=(.*)" , "ig" );
    var array = regExp.exec( attribute[i] );
    element.setAttribute( array[1] , array[2] );
    }

    if( !value )
    {
    return( element );
    }
    else
    {
    element.appendChild( value );
    }

    return( element );
    }
      

  6.   

    href里不要用void(0),而应该使用#。上面我的那段JS代码你再研究一下吧
      

  7.   

    原代码是这样的:
    /************************************************************************
    * Author:zx
    *  Time:2006.1.22 22:17
    *  File name:menus.js
    *  Version:1.0
    ************************************************************************/function ajaxMenu(  )
    {
    /*
    * 功能:
    *   建立ajaxMenu对象
    * 保留HTML ID:
    *   以level开头后跟数字的ID,如:level0
    */

    this.ajax = ajax;
    this.ajax();
    this.open = mOpen;

    this.ajaxEnd();
    base = 0;
    idPrefix = "level";
    states = new Array( "未初始化","读取中","已读取","交互中","完成" );
    space = navigator.appName.toUpperCase()=="NETSCAPE" ? 1 : 0;
    }function mOpen( id , url , mode , action )
    {
    /*
    * 继承:
    *   ajax.aOpen
    * 参数:
    *   当前记录的id
    */

    base = id;
    show = getLastedNode( document.getElementById( idPrefix+base ) );
    aOpen( url , mode , action );
    }function getLastedNode( elem )
    {
    /*
    * 功能:
    *   处理服务器返回的信息
    * 类型:
    *   内部方法
    * 参数:
    *   element对象
    */

    var newElement = elem;

    try
    {
    if( newElement.childNodes[space].nodeType == 3 )
    {
    return( newElement );
    }

    newElement = getLastedNode( newElement.childNodes[space] );
    }
    catch(e)
    {
    return( false );
    }

    return( newElement ? newElement : elem );
    }function pross()
    {
    /*
    * 功能:
    *   处理服务器返回的信息
    * 类型:
    *   内部方法
    * 前提:
    *   不可单独调用,需继承本程序内置的ajax对象.childNodes[space]
    */

    with( request )
    {
    if( readyState==4 && status==200 )
    {
    var data = responseXML;
    var objects = data.getElementsByTagName( "mains" )[0].childNodes;
    var len = objects.length;
    var attribute = new Array();
    var tr = create( "tr" , attribute , "" );
    var tbody = create( "tbody" , attribute , tr );

    attribute[0] = "width=100%";
    attribute[1] = "border=0";
    attribute[2] = "cellspacing=0";
    attribute[3] = "cellpadding=0";
    var tbs = create( "table" , attribute , tbody ); for( var i=space ; i<len ; i += (1+space) )
    {

    attribute = new Array();
    attribute[0] = "onclick=javascript:alert('hehe');"; //list("+(base+1)+","+objects[i].getAttribute("id")+")
    attribute[1] = "href=javascript:void(0)";
    var a = create( "a"  , attribute , objects[i].getAttribute("value") );

    attribute = new Array();
    attribute[0] = "align=center";
    var td = create( "td" , attribute , a );
    alert( td.innerHTML );
    tr.appendChild( td );
    }

    try
    {
    if( document.getElementById( idPrefix+(base+1) ) )
    {
    return;
    }
    else
    {
    attribute = new Array();
    attribute[0] = "align=center";
    attribute[1] = "colspan="+i;
    var td = create( "td" , attribute , "" );

    attribute = new Array();
    attribute[0] = "id="+idPrefix+(++base);
    var tr = create( "tr" , attribute , td );
    tbody.appendChild( tr );
    }
    }
    catch(e)
    {
    alert( "程序出错!" );
    }

    show.innerHTML="";
    show.appendChild( tbs );
    }
    else
    {
    show.innerHTML = states[ readyState ];
    }
    }
    }function create( name , attribute , value )
    {
    /*
    * 功能:
    *   建立一个Element对象
    * 类型:
    *   内部方法
    * 参数:
    *   name对象名称
    *     attribute存放对象属性数组,数组格式:attribute[Num]="属性名=属性值";
    *   value对像值或子节点,空则表示无值或子节点
    */

    var element = document.createElement( name );
    var len = attribute.length;

    for( var i=0 ; i<len ; i++  )
    {
    var regExp = new RegExp( "(.*)=(.*)" , "ig" );
    var array = regExp.exec( attribute[i] );
    element.setAttribute( array[1] , array[2] );
    }

    if( !value )
    {
    return( element );
    }

    if( !value.nodeType )
    {
    element.innerHTML = value;
    }
    else if( value.nodeType== 3 )
    {
    element.appendChild( document.createTextNode( value ) );
    }
    else
    {
    element.appendChild( value );
    }

    return( element );
    }
      

  8.   

    不知道你是出于何目的,或者看到什么范例,其实在DHTML里直接组织拼接HTML是最快最灵活的方法,用document.createElement效率次之,至于你这种使用 attribute 的就有些不通了
      

  9.   

    实在抱歉,大姐,因为刚学js不久,为了让ff和ie兼容,才越做越烦的,现在通令一种浏览器发现错误,才知道大姐的话是正确,真不应该怀疑大姐!