我写了一个js文件,使用prototype的Class.create()方法,然后在页面调用这个js文件,同时创建了这个js文件的对象,传入参数,但是页面总是报一个javascript error: 说我在js文件创建的对象是"undefined"。我很郁闷,那位大侠能帮忙解决一下,小弟不胜感激。

解决方案 »

  1.   

    SelectTest = Class.create({
       initialize: function(availableBox,selectedBox,typeAllBtn,typeClrBtn,hiddenInputName,listAll){
          this.availableBox = availableBox;
          this.selectedBox = selectedBox;
      this.hiddenInputName = hiddenInputName;
       
          Event.observe(typeAllBtn,'click',this.checkAll.bindAsEventListener(this),false);
          Event.observe(typeClrBtn,'click',this.checkClr.bindAsEventListener(this),false);
       
      this.syncHiddenValue();
    },syncHiddenValue: function(){
    var concatedValue = '';
    for(var i=0; i<$(this.selectedBox).options.length; i++){
    concatedValue += $(this.selectedBox).options[i].value;
    if(i < $(this.selectedBox).options.length-1){
    concatedValue += '_:_';
    }
    }

    $(this.hiddenInputName).value = concatedValue;
    },//add one option in left
    addLeftOption:function(objtext,objvalue){
       var objLeft=document.getElementById(this.availableBox);
       objLeft.add(new Option(objtext,objvalue));  
    },//add one option in right
    addRightOption:function(objtext,objvalue){
       var objRight=document.getElementById(this.selectedBox);
       objRight.add(new Option(objtext,objvalue)); 
    },//remove all the vendors in both boxes
    removeAll:function(){ 
    var objLeft = document.getElementById(this.availableBox); 
    var objRight = document.getElementById(this.selectedBox);
    objLeft.options.length=0; 
    objRight.options.length=0;
    },checkAll:function(){
       this.removeAll();
       for(var i=0;i<listAll.length;i++){
          this.addLeftOption(listAll[i],""+i);
       }
    },checkClr:function(){
       this.removeAll();
    }});
      

  2.   

    这么搞:
    var SelectTest = Class.create();
    SelectTest.prototype={ 
       initialize: function(availableBox,selectedBox,typeAllBtn,typeClrBtn,hiddenInputName,listAll){ 
          this.availableBox = availableBox; 
          this.selectedBox = selectedBox; 
      this.hiddenInputName = hiddenInputName; 
        
          Event.observe(typeAllBtn,'click',this.checkAll.bindAsEventListener(this),false); 
          Event.observe(typeClrBtn,'click',this.checkClr.bindAsEventListener(this),false); 
        
      this.syncHiddenValue(); 
    }, 
    syncHiddenValue: function(){ 
    var concatedValue = ''; 
    for(var i=0; i <$(this.selectedBox).options.length; i++){ 
    concatedValue += $(this.selectedBox).options[i].value; 
    if(i  < $(this.selectedBox).options.length-1){ 
    concatedValue += '_:_'; 

    }  $(this.hiddenInputName).value = concatedValue; 
    },  //add one option in left 
    addLeftOption:function(objtext,objvalue){ 
       var objLeft=document.getElementById(this.availableBox); 
       objLeft.add(new Option(objtext,objvalue));   
    },  //add one option in right 
    addRightOption:function(objtext,objvalue){ 
       var objRight=document.getElementById(this.selectedBox); 
       objRight.add(new Option(objtext,objvalue));  
    },  //remove all the vendors in both boxes 
    removeAll:function(){  
    var objLeft = document.getElementById(this.availableBox);  
    var objRight = document.getElementById(this.selectedBox); 
    objLeft.options.length=0;  
    objRight.options.length=0; 
    },  checkAll:function(){ 
       this.removeAll(); 
       for(var i=0;i <listAll.length;i++){ 
      this.addLeftOption(listAll[i],""+i); 
       } 
    },  checkClr:function(){ 
       this.removeAll(); 
    }
    };
      

  3.   


    var Animal = Class.create();
    Animal.prototype = {
      initialize: function(name, sound) {
        this.name  = name;
        this.sound = sound;
      },
      speak: function() {
        alert(name + " says: " + sound + "!");
      }
    };
    var snake = new Animal("Ringneck", "hissssssssss");
    snake.speak();
    // -> alerts "Ringneck says: hissssssssss!"
    var Dog = Class.create();
    Dog.prototype = Object.extend(new Animal(), {
      initialize: function(name) {
        this.name  = name;
        this.sound = "woof";
      }  
    });
    var fido = new Dog("Fido");
    fido.speak();// -> alerts "Fido says: woof!"看看这个例子,你可以参考Prototype详细的帮助文件,地址在这里:
    http://www.prototypejs.org/api
      

  4.   

    谢谢webphoenix