使用jquery的随机字符串生成器

时间:2014-09-02 01:25:52

标签: javascript

我找到了这个脚本

<script type="text/javascript">
$(document).ready(function() {
jQuery.fn.wordgen = function(length){
  var i = 0;
  var word = "";
  var vowels = new Array("a","e","u","i","o");
  var consonants = new Array("q","w","r","t","p","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m");

  while(i < (length/2)){      
    i++;
    word += vowels[Math.floor(Math.random() * vowels.length)] + consonants[Math.floor(Math.random() * consonants.length)];
  }
  $(this).val(word);
}

$("#generarmu").click(function(){
    var longitud = $("#largomu").val();
    $("#nombremu").wordgen(longitud);
});

$("#largomu").change(function(){
    var longitud = $("#largomu").val();
    $("#nombremu").wordgen(longitud);
});


});
</script>

我正在使用

Longitud del nombre:
<select id="largomu" name="largomu">
<option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option> </select>
<br/>
<input id="nombremu" value="" style="padding-left:10px;height:25px;text-transform:uppercase;width:340px;"/>
<input type="input" id="generarmu" class="search_submit" style="width:200px;height:18px;" value="Generar!">

但我的字符串长度都有问题,连字符串的长度总是+1(奇数)

你可以在这里查看

http://jsfiddle.net/1pt3yzbs/

提前谢谢

2 个答案:

答案 0 :(得分:0)

因为even number / 2是偶数,然后在i之前停止number/2之前,请检查您的情况i < (length/2)

可能的修复:

var stop_condition = length/2;
if (stop_condition % 2 === 0 )
     stop_condition += 1;

    while(i < stop_condition)
    //continue

答案 1 :(得分:0)

我不了解JQuery。但基于代码中的逻辑,这是我可以推断的:

len = 5

len / 2 = 2.5

I = 0

Iter1: 0 <2.5 - 执行

Iter 2: 1&lt; 2.5 - 执行

Iter 3: 2&lt; 2.5 - 执行

另外,好像你正在减半,并做了两次加词的事情。

所以5/2 = 2.5

基于上述 - 执行3次...并基于逻辑(因为它似乎执行了两次),3x2 =总共6个字符。

编辑: word + =元音[Math.floor(Math.random()* vowels.length)] +辅音[Math.floor(Math.random()* consonants.length)];

上述行每次迭代添加两次。因此,任何迭代计数(偶数或奇数),单词都会被添加两次,总是显示偶数。