2013-09-28 3 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; 

"вар Num" будет новая переменная, которая скрывает оригинальный PARM. Попробуйте взять эту линию.

+1

Нет, это не может быть проблемой. –

+0

Я пробовал. Не работает. Благодарю. Все еще играю с этим. – Mayo

Смежные вопросы