变量传递给console.log读取的函数,但不传递给其他变量

时间:2013-09-28 20:48:52

标签: javascript jquery function parameter-passing 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();

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

我相信一旦你说了

var num = num; 

“var num”将是一个隐藏原始parm的新变量。试着把这条线拿出去。