2013-09-28 53 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