2012-01-04 45 views
0

我有以下功能:爲什麼我會得到這個函數的雙控制檯消息?

var checkNameLenght = function(name,nameLenght,allowedLenght,defaultName) { 

    var result; 

    if(!(nameLenght <= allowedLenght) || !(/[^a-z]/i.test(name))) { 
     result = name; 
    } 
     else { 
      if(opts.debug == true) { 
       console.log(name+' is to long or contains special characters/numbers | Please choose a name shorter than '+allowedLenght+' characters or remove any character/number'); 
      } 
      result = defaultName; 
     } 

    return result; 

} 

我用它來檢查一個字符串的長度(在我的情況的輸入值),如果它包含任何特殊字符或數字。

我用它像這樣:

var input = 'Somevalue'; 

checkNameLenght(input ,input.length,16,'Username'); 

的唯一的事情是,如果input字符串包含一些不是將輸出消息兩次控制檯上述條件。

這是爲什麼發生?

+1

當在JS控制檯中手動運行提供的代碼時,我沒有遇到雙重打印錯誤。到處檢查是否調用了'checkNameLenght()'以確保它沒有被調用兩次。看到更多的代碼可能會有所幫助。 – 2012-01-04 15:20:04

+1

我沒有給你答案,但我想我會很挑剔,並指出你已經在整個函數中將「length」拼寫成「lenght」。 – evilspoons 2012-01-04 15:20:17

+1

您的代碼中沒有任何內容會建議您記錄兩次。也許你在代碼的其餘部分多次調用'checknameLenght()'函數? – swatkins 2012-01-04 15:21:54

回答

2

我測試過了,它工作得很好。你確定你沒有兩次調用這個函數嗎? 並試圖避免opts.debug做什麼,只需使用普通老js if(console)

+0

是的,我打電話給該功能兩次,我正在尋找其他一些原因,如果我不是在這裏問我會放棄該函數...和opt.debug我使用它,如果用戶選擇在控制檯中看到消息或不,它是一個jQuery插件的一部分 – Roland 2012-01-04 15:32:01

相關問題