0

関数に変数を渡そうとしていますが、うまくいきません。

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();
4

2 に答える 2

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/

于 2013-09-28T20:57:25.107 に答える
0

私はあなたが言うと信じます

var num = num; 

「var num」は、元のパラメーターを隠す新しい変数になります。この行を取り出してみてください。

于 2013-09-28T20:54:48.293 に答える