RT,还要可以穿参数。
我这样做的
var s = document.createElement("SELECT") ;
s.onchange = "chufa()" 
但是貌似不行啊

解决方案 »

  1.   

    [code=HTM]
    <script type="text/javascript">
    function chufa(){alert('ok');}
    onload=function(){
    var s = document.createElement("SELECT");
    var opt = new Option("xx","xx");
    s.options.add(opt);
    opt = new Option("ccc","ccc");
    s.options.add(opt);
    s.onchange = chufa;
    document.body.appendChild(s);
    }
    </script>[/code]
      

  2.   

    var s = document.createElement("SELECT") ;
    s.onpropertychange = "chufa()"  
    这样试试
      

  3.   

    错了,
    var s = document.createElement("SELECT") ;
    s.onpropertychange = chufa;
    这样试试
      

  4.   

    1楼正解,就是onchange的赋予写法有问题。
      

  5.   


    js函数不需要显示定义参数,可以用argument[0],arugment[1]....来获取参数!
      

  6.   

    改成带参数的,只有第一次加载的时候有效果:<script type="text/javascript">
    function chufa(a){alert(a);}
    onload=function(){
    var s = document.createElement("SELECT");
    var opt = new Option("xx","xx");
    s.options.add(opt);
    opt = new Option("ccc","ccc");
    s.options.add(opt);
    s.onchange = chufa("abc");
    document.body.appendChild(s);
    }
    </script> 改成这样的用法:s.onpropertychange = chufa;只有IE有效,火狐没有反映!
      

  7.   

    还要可以穿参数。
    我这样做的
    var s = document.createElement("SELECT") ;
    s.onchange = "chufa()" 
    =======
    如果参数固定的,你可以直接写在chufa函数体里。
    如果参数变动的,你可以通过一个全局变量存放,在chufa函数体取它使用。
    在s.onchange = "chufa()" 这句上作文章是不行的,就算写上参数,那个参数也是固定的,就算每次都传了,传的也都是最初设置时的那个值。
      

  8.   

    s.onchange 一旦定下是什么就是什么,除非之后再次改写s.onchange。
    所以想通过它来传递一个变化的参数是不可能的。必须通过其它方式(我上面说了)。
      

  9.   

    <script type="text/javascript">//当文档加载完毕时
    window.onload = function(){ /*
    *desc 根据不同浏览器给元素添加事件
    *parma object obj(要添加事件的对象)
    *parma string eventname(要添加的事件名)
    *parma string callback(回调函数名)
    *return void
    */
    var addEvent = function( obj, eventname, callback ){

    //其他浏览器
    if(window.addEventListener){
    obj.addEventListener( eventname, callback, false );
    }
    //ie
    else{
    obj.attachEvent( 'on'+eventname, callback ); 
    } return;

    }
    /*
    *desc alert当前触发元素的id
    *return void
    */
    function callback(){
    alert(this.id);
    } /* 创建select元素并赋予其相应属性 */
    var select = document.createElement("select");
    select.id = "myselect";
    select.name = "myselect"; /* 创建option元素并赋予其属性 */
    var option = document.createElement("option");
    option.value = "1";
    option.innerHTML = "选项1";
    //将次元素追加到select元素的子元素
    select.appendChild(option); /* 创建option元素并赋予其属性 */
    option = document.createElement("option");
    option.value = "2";
    option.innerHTML = "选项2";
    //将次元素追加到select元素的子元素
    select.appendChild(option); //给select标签添加事件
    addEvent( select, 'change', callback ); //将select元素追加到body的子元素
    document.body.appendChild(select);

    }
    </script>
      

  10.   

    改了一下,在change的时候可以得到当前选中的value和innerHTML
    <script type="text/javascript">//当文档加载完毕时
    window.onload = function(){ /*
    *desc 根据不同浏览器给元素添加事件
    *parma object obj(要添加事件的对象)
    *parma string eventname(要添加的事件名)
    *parma string callback(回调函数名)
    *return void
    */
    var addEvent = function( obj, eventname, callback ){

    //其他浏览器
    if(window.addEventListener){
    obj.addEventListener( eventname, callback, false );
    }
    //ie
    else{
    obj.attachEvent( 'on'+eventname, callback ); 
    } return;

    }
    /*
    *desc alert当前触发元素的id
    *return void
    */
    function callback(){
    alert('当前选中项的值为:'+this.value+' 当前选中项的文字描述为:'+this.options[this.selectedIndex].text);
    }
    /* 创建select元素并赋予其相应属性 */
    var select = document.createElement("select");
    select.id = "myselect";
    select.name = "myselect"; /* 创建option元素并赋予其属性 */
    var option = document.createElement("option");
    option.value = "1";
    option.innerHTML = "选项1";
    //将次元素追加到select元素的子元素
    select.appendChild(option); /* 浅克隆一个option元素并赋予其属性 */
    option = option.cloneNode(false);
    option.value = "2";
    option.innerHTML = "选项2";
    //将次元素追加到select元素的子元素
    select.appendChild(option);

    //给select标签添加事件
    addEvent( select, 'change', callback ); //将select元素追加到body的子元素
    document.body.appendChild(select);

    }</script>
      

  11.   

    这个方法好象也无法做到加自己的参数的办法,最后显示的无非只是其本身的value和text。如果这2个变成变量以后,方法也就失效了。
      

  12.   

    给回调函数传参?这样就行了
    <script type="text/javascript">window.onload = function(){

    /*
    *desc 根据不同浏览器给元素添加事件
    *parma object obj(要添加事件的对象)
    *parma string eventname(要添加的事件名)
    *parma string callback(回调函数名)
    *return void
    */
    var addEvent = function( obj, eventname, callback ){ //其他浏览器
    if(window.addEventListener){
    obj.addEventListener( eventname, callback, false );
    }
    //ie
    else{
    obj.attachEvent( 'on'+eventname, callback ); 
    } return;

    }
    /*
    *desc alert当前触发元素的value和text
    *return void
    */
    var mychange = function( var1,var2 ){
    //alert('当前选中项的值为:'+this.value+' 当前选中项的文字描述为:'+this.options[this.selectedIndex].text);
    alert(var1+var2);
    }
    /* 创建select元素并赋予其相应属性 */
    var select = document.createElement("select");
    select.id = "myselect";
    select.name = "myselect";
    /* 创建或浅克隆10个option元素并赋予其属性 */
    for(i=1;i<=10;i++){
    if(i==1)
    var option = document.createElement("option");
    else
    option = option.cloneNode(false);

    option.value = i;
    option.innerHTML = "选项"+i;
    //将次元素追加到select元素的子元素
    select.appendChild(option);
    }

    //给select标签添加事件
    addEvent( select, 'change', function(){mychange('添加change事件,','并且能传参')} ); document.getElementsByTagName("body")[0].appendChild(select);
    }
    </script>