我正在制作这个随机的用户名生成器,因为我可以并且它具有选项和内容,其中之一是确保名称中的单词之一是用户在输入中键入的单词,但我无法理解工作。
我使用.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或任何真正可以工作的东西,只要它确实起作用
最佳答案
尝试类似
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");
}
但您还需要确保您的代码不会永远重复
除了重新启动外,我不确定该函数是否执行您在问题中描述的任务。
您正在随机合并
first
中的单词和second
中的单词,并检查是否在其中找到typed
字符串。如果要检查列表,则无需随机选择项目,而是遍历所有项目直到找到为止。
您可能想对每个数组使用常规的
for
循环,并与它们中的每个项目匹配。