0

我正在制作这个随机用户名生成器,因为我可以并且它有选项和东西,其中之一是确保名称中的一个单词是用户在输入中输入的单词,但我无法得到它工作。

我使用 .search() 来确定它是否已经存在,但我无法让它重复该功能。

现在,我很确定我需要的只是完全重复或重新启动该功能,大约就在这里

  if(n="-1") {
      // ?????
  }

这是整个代码:

function makeName() {
  var typed = document.getElementById("field1").value;
  var first = [/*1ST PART OF NAMES */];
  var second = [ /*2ND PART OF NAME*/ ];
  var rand = Math.floor(Math.random()*first.length);
  var sand = Math.floor(Math.random()*second.length);
  var right = first[rand];
  var wrong = second[sand];
  var str = right + wrong;
  var n = str.search(typed);
  if(n="-1") {
      /* here's where i'm stumped pretty much 
         i need to restart the function here i think */
  }
  document.getElementById("field2").value= str;
  $("#result").fadeIn("fast");
}

javascript 或 jquery 或任何真正可以工作的东西,只要它确实有效

4

4 回答 4

2

n = "-1"是一个赋值 - 它总是评估为布尔值true(因为 '-1' 字符串在 JS 中被认为是真实值)。

n === -1但是,这是一个比较,这可能就是您需要的。无需与字符串“-1”进行比较 - search(以及indexOf- 顺便说一句,最新的更适合这里)总是返回一个数字。

于 2013-09-29T16:49:29.573 回答
1

你必须比较使用 n == "-1"

于 2013-09-29T16:50:29.660 回答
1

当您比较值时,您必须使用双 == 而不是单 = 所以错误在行中:

if(n="-1")

它应该是 :

if(n == -1)
于 2013-09-29T16:51:12.887 回答
1

尝试类似的东西

function makeName() {
  var typed = document.getElementById("field1").value;
  var first = [/*1ST PART OF NAMES */];
  var second = [ /*2ND PART OF NAME*/ ];

  // use a loop and move the calculating code inside it
  // initialize the variables so that it will not break on first iteration
  var n = -1;
  var str = '';
  while (n==-1) {
    var rand = Math.floor(Math.random()*first.length);
    var sand = Math.floor(Math.random()*second.length);
    var right = first[rand];
    var wrong = second[sand];
    str = right + wrong;
    n = str.search(typed);
  }

  document.getElementById("field2").value= str;
  $("#result").fadeIn("fast");
}

但您还需要确保您的代码不会永远重复


除了重新启动之外,我不确定该功能是否执行您在问题中描述的任务..

您正在随机合并一个单词 fromfirst和一个单词 fromsecond并检查是否在typed其中找到字符串..

如果要检查列表,则不需要随机选择项目,而是遍历所有项目,直到找到为止。

您可能希望for对每个数组使用常规循环并匹配其中的每个项目..

于 2013-09-29T16:51:31.850 回答