2013-09-28 66 views
0

我想將一個變量傳遞給函數,但它不工作。變量傳遞給由console.log讀取的函數,但不是由其他變量

點擊該DIV #getNum調用一個函數

<div id="getNum">GET NUM</div> 

...調用函數makeID()並傳遞低於17

$(document).ready(function(){ 
    $("#getNum").click(function(){ 
     makeid(17); 
     }); 
    }); 

很簡單的例子數顯示什麼希望。

function makeid(num){ // It doesn't work as the parameter isn't passed 
    var chooseLetters = "abcdefghijklmnopqrstuvwxyz"; 
    var loopNum=num; 
    for(var i=0; i < loopNum; i++) // loopNum does not work! 
     text += chooseLetters.charAt(Math.floor(Math.random() * chooseLetters.length)); 
     return text; 

} // END function makeid(); 

/*工作示例*/

function makeid(num){ // why can I not pass the parameter to the for loop? 
//console.log(num); // console.log reads num! 
var num = num; // variable num is not read! 
    var loopNum = num; // works if hard coded 


     var chooseLetters = "abcdefghijklmnopqrstuvwxyz"; 

     for(var i=0; i < loopNum; i++) 
      text += chooseLetters.charAt(Math.floor(Math.random() * chooseLetters.length)); 

     //console.log(text); 
     return text; 

    } // END function makeid(); 

回答

1

問題是你的文本變量。您必須在與之連接之前對其進行定義。基本上你試圖將一個字符串連接到一個不存在的變量。這會引發錯誤,您的腳本將無法工作。

text+='some text';text=text+'some text';的簡寫形式您注意到,如果未在代碼中定義文本變量,則會出現問題。

function makeid(num){ // It doesn't work as the parameter isn't passed 
text=''; 
    var chooseLetters = "abcdefghijklmnopqrstuvwxyz"; 
    var loopNum=num; 
    for(var i=0; i < loopNum; i++) // loopNum does not work! 
     text += chooseLetters.charAt(Math.floor(Math.random() * chooseLetters.length)); 
     return text; 

} // END function makeid(); 

工作撥弄

http://jsfiddle.net/kasperfish/zRGCR/1/

+0

謝謝。它開始到了某個地方。出於某種原因,它寫入警報而不是div。我希望能夠弄清楚。如果沒有,我會再次發佈。 – Mayo

+0

Re text ='';我在早期版本中使用過它,但它在那裏也不工作。爲什麼console.log讀取通過的內容,但變量不是?不應該var aaa = num工作? – Mayo

0

我相信一旦你說

var num = num; 

的 「VAR NUM」 將是一個新的變量,它可以隱藏原始PARM。嘗試採取這條線。

+1

不,這不可能是問題。 –

+0

我試過了。沒有工作。謝謝。仍在玩這個。 – Mayo