2016-08-03 73 views
-2

我創建了一個返回true和false的原型方法。問題是它不會返回值。我知道它達到的聲明,因爲我已經使用console.log()滿足條件但不返回值。爲什麼我的原型方法返回undefined?

我似乎無法弄清楚這一點。如果有人能幫助我,我會非常感激。下面是我的代碼

function Validation(){ 
    this.checkRequired = function(){ 
     $(".modifiers-group-cont").each(function(){ 
      var select_opt_notify = $(this).find(".select-option-notify"); 

      /*The radio buttons that are required are always going to be marked check,thats why we are only 
      * checking for the checkbox*/ 
      if($(this).attr("data-is-checked") == "false" && $(this).attr("data-input-type") == "checkbox"){ 
       select_opt_notify.show(); 
       return false; 
      } else { 
       select_opt_notify.hide(); 
       return "true"; 
      } 
     }); 
    } 

function ModifierPost(){ 
    (function(){ 
     $("#add-to-cart").click(function(){ 
      console.log(validation.constructor); //Shows undefined 

      if(validation.checkRequired()){ 
      $.post("#",$("form").serialize()+ "&item_id=" + item_id); 
      } 
     }); 
    })(); 
} 
+0

哪裏原型方法? 'this.methodName'與原型方法不一樣。 – skyline3000

+0

「我創建了一個原型方法」不,你剛剛在一個對象上聲明瞭一個方法。一個原型方法會沿着'Validation.prototype.checkRequired = function(){...}'的方向進行聲明。 – zzzzBov

+0

@zzzzBov好吧對不起,我對一個對象的原型和常規方法之間感到困惑 – json2

回答

2

return陳述屬於功能each

$(".modifiers-group-cont").each(function(){ 

你需要暴露值,您想返回到外部範圍,並呼籲return後致電each

+0

感謝您指出。我甚至沒有意識到這一點。 – json2

0

你已經用Capital V創建了你的函數,並且在驗證函數名 中用Smaill v調用,這就是它給你提供的未定義代碼中提到的地方的原因。

console.log(validation.constructor); //Shows undefined 
if(validation.checkRequired()){ 

應當與資本V一樣

console.log(Validation.constructor); //Shows undefined 
if(Validation.checkRequired()){