为何我为DIV添加的onclick事件无效呢?

解决方案 »

  1.   

    <BODY bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
    <script language="javascript" type="text/JavaScript">
    var Data = new Array();
    Data[0] = [0, 'aaa'];
    Data[1] = [1, 'bbb'];
    Data[2] = [2, 'ccc'];for(var i=0; i<Data.length; i++){
            var DIV = document.createElement('div');
            DIV.style.cssText = 'width:80px; height:18px; border:1px #7d7d7d solid;';
            DIV.innerText= Data[i][1];
            DIV.i= Data[i][0];
            DIV.onclick=function(){alert(this.i)};
            document.body.insertAdjacentElement('beforeEnd', DIV);
    }
    </script>
    </BODY>
    </HTML>
      

  2.   

    <BODY bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">
    <script language="javascript" type="text/JavaScript">
    var Data = new Array();
    Data[0] = [0, 'aaa'];
    Data[1] = [1, 'bbb'];
    Data[2] = [2, 'ccc'];for(var i=0; i<Data.length; i++){
            var DIV = document.createElement('div');
            DIV.style.cssText = 'width:80px; height:18px; border:1px #7d7d7d solid;';
            DIV.innerText= Data[i][1];
    DIV.onclick=new Function("alert("+Data[i][0]+")");
            document.body.insertAdjacentElement('beforeEnd', DIV);
    }
    </script>
    </BODY>
    </HTML>
      

  3.   

    能解释下
    new Function
    吗?
      

  4.   

    也可以用
    DIV.attachEvent("onclick", new Function("alert(" + Data[i][0] + ")"));不是你添加的onclick事件无效,而是函数里的语法是要到函数执行时才解析的,这时候你的
    Data[i][0]里的i就变成未有定义了,于是解析出错.用new Function语法,可以让函数里的Data[i][0]在函数定义时就解析,于是函数执行时Data[i][0]已变成实际值了,于是有效.new Function语法可参看微软的脚本手册