2013-08-01 29 views
-5

我正在爲javascript對象的屬性中的keyup事件分配值。它在控制檯中打印爲空。在javascript中發生空錯誤

function check(id){ 
    var me= this; 
    this.ID= null; 
    this.matchName= this.ID.substr(this.ID.lastIndexOf('_')); 
    this.first= function(){ 
    alert(me.matchName) 
} 

this.second= function(){ 
    alert(1) 
} 

this.touch= function(){ 
    $(id).find('input').keyup(function(e){ 
    me.ID= this.id;; 
    if(e.keyCode==13){ 
     id.indexOf('first')>-1? me.first(): me.second(); 
    } 
    })} 
} 

身體

<div class="first"> 
    <input type="text" id="val_00_01" /> 
</div> 
<div class="two"> 
    <input type="text" id="val_00_02"/> 
</div> 
<script type="text/javascript"> 
    var first= new check('.first'); 
    var two= new check('.two'); 
    first.touch() 
    two.touch() 
</script> 
+3

您忘了提問或格式化您的代碼。 – MightyPork

+1

你沒有給我們一個例子,說明代碼在什麼地方出現,或者在什麼情況下,什麼時候出現。 – NoLifeKing

回答

1

嗯,這是一個破碎的部分(除非是故意的嗎?)

設置ID屬性設置爲null

this.ID= null; 

嘗試訪問的屬性,你只是設置等於零

this.matchName= this.ID.substr(this.ID.lastIndexOf('_')); 

此代碼運行在您的Check類的初始化(構造函數)中,並且會出錯。


這裏就是我想你想,用更好的格式,這樣不會引起眼睛出血。

// capitalize first letter of class name 
function Check(className){ // use a prop/descriptive parameter name 
    var me = this; // set your variable "me" to class instanced 
    this.ID = null; // INITIALIZE your ID and matchName variables 
    this.matchName = null; 

    this.first = function(){ 
     alert(me.matchName) 
    }; 
    this.second = function(){ 
     alert(1) 
    }; 
    this.touch = function(){ 
     // get the element with class=className 
     // find the input inside of it 
     // set an onkeyup handler to the input element 
     $(className).find('input').keyup(function(e){ 
      me.ID = this.id;; // set the ID variable to the INPUT element's ID property 
      // set matchName to the last part of the input's ID property 
      // matchName will be "01" or "02" in this case 
      me.matchName = this.ID.split("_")[this.ID.split("_").length - 1]; 
      if(e.keyCode==13){ 
       id.indexOf('first') > -1 ? me.first(): me.second(); 
      } 
     }); 
    }; 
} 
... 
var first = new Check('.first'); 
var two = new Check('.two'); 
first.touch(); 
two.touch(); 
+0

當我按回車鍵時,它應該填寫ID – Carlos

+0

@amit當你將它改爲null並嘗試使用它的下一行時,什麼樣的魔法會改變它? – JJJ

+0

@lastCoder:onkeyup event me.ID = this.id; – Carlos