我正在制作这个随机的用户名生成器,因为我可以并且它有选项和东西,其中一个是确保名称中的一个词是用户在输入中键入的一个,但我不能让它发挥作用。
我使用.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,或者其他任何真正有用的东西,只要它确实
答案 0 :(得分:2)
n = "-1"
是一个赋值 - 它总是求值为布尔true
(因为' -1'字符串在JS中被认为是真正的值)。
n === -1
是一个比较,这可能就是你需要的。无需与字符串" -1"进行比较 - search
(以及indexOf
- 顺便说一句,最新的更适合这里)总是返回一个数字。
答案 1 :(得分:1)
您必须比较使用n == "-1"
答案 2 :(得分:1)
比较值时必须使用double ==而不是single = 所以错误在于:
if(n="-1")
它应该是:
if(n == -1)
答案 3 :(得分: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");
}
但您还需要确保您的代码不会永远重复
除了重新启动,我不确定该功能是否执行了您在问题中描述的任务..
您随机合并了first
中的一个词和second
中的一个词,并检查其中是否找到typed
字符串..
如果要检查列表,则不需要随机选择项目,而是遍历所有项目,直到找到它为止。
您可能希望为每个数组使用常规for
循环,并匹配其中的每个项目。