我在创建新的节点时,使用newElement.attachEvent("onchange",cktype(this))方法绑定了cktype(obj)函数,但是节点还每创建,cktype()函数就已经被执行了,返回了一个undefined值。
换了一个方法:
再执行完newdiv.appendChild(newElement);之后,在执行document.getElementById(i).onchange="cktype(this)";绑定cktype()函数。但是,这样的话,连cktype()都不会被执行~~
大家帮帮忙吧~~

解决方案 »

  1.   

    上网查了一下资料。使用newElement.attachEvent()方法是无法传递参数的。须改成newElement.attachEvent("onchange",function(i){cktype(i)});可是依然传递不了参数
      

  2.   

    貌似楼主只是考虑IE下面的情况,还没考虑兼容其它浏览器。1、你这样在绑定事件:document.getElementById(i).onchange="cktype(this)"的写法是不对的,onchange的值应该是一个函数,而你给了它字符串,所以当然不会执行。2、我见你传的参数是this,如果只是this的话,你不用传,你直接在你的事件函数里面使用event.srcElement就能取到你想要的this对象。下面是一个只考虑IE的例子,如果你要作兼容的话,使用jQuery这个javascript框架吧,也比较简单。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>New Web Project</title>
        </head>
        <body>
            <select id="sItems">
             <option value="1">one</option>
             <option value="2">two</option>
             <option value="3">three</option>
            </select>

    <script type="text/javascript">
    document.getElementById("sItems").onchange = function(){
    var obj = event.srcElement;
    alert(obj.value);
    }
    </script>
        </body>
    </html>
      

  3.   

    +
    document.getElementById(i).onchange=cktype;
    这样即可调用,括号省略