我正在尝试将变量传递给函数但它无法正常工作。
点击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();
答案 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();
工作小提琴
答案 1 :(得分:0)
我相信一旦你说了
var num = num;
“var num”将是一个隐藏原始parm的新变量。试着把这条线拿出去。