如果等于其他输入值则更改输入值

时间:2018-10-03 12:34:19

标签: javascript random

一段时间以来,我一直在尝试使用IF语句来解决这个问题,但我不再认为这可能是最好的方法,并且不确定现在要尝试什么。

我有6个随机生成的输入值。前5个从其各自的名称列表中拉出随机名称,第6个从所有组合的列表中拉出随机名称。这应该是包含所有名称的单独数组,还是有办法组合数组?

另一个问题是第6个输入需要保持随机化,直到其输入值不等于前5个输入中的任何一个。

请让我知道您将如何对照其他5个值检查第6个值,然后继续获取新值。

感谢所有帮助

function getRandom1()
{
	var names = [
'Red1',
'Blue1',
'Green1'
];
	
	return names[Math.floor(Math.random() * names.length)];
}

function getRandom2()
{
	var names = [
'Red2',
'Blue2',
'Green2'
	];
	
	return names[Math.floor(Math.random() * names.length)];
}

function getRandom3()
{
	var names = [
'Red3',
'Blue3',
'Green3'
	];
	
	return names[Math.floor(Math.random() * names.length)];
}

function getRandom4()
{
	var names = [
'Red4',
'Blue4',
'Green4'
	];
	
	return names[Math.floor(Math.random() * names.length)];
}

function getRandom5()
{
	var names = [
'Red5',
'Blue5',
'Green5'
];
	
	return names[Math.floor(Math.random() * names.length)];
}

function getRandomX()
{
	var names = [
  'Red1',
'Blue1',
'Green1',
  'Red2',
'Blue2',
'Green2',
  'Red3',
'Blue3',
'Green3',
  'Red4',
'Blue4',
'Green4',
  'Red5',
'Blue5',
'Green5'
];
	
	return names[Math.floor(Math.random() * names.length)];
}




function myFunction() {
        document.getElementById("input_1").value =( getRandom1() );
        document.getElementById("input_2").value =( getRandom2() );
        document.getElementById("input_3").value =( getRandom3() );
        document.getElementById("input_4").value =( getRandom4() );
        document.getElementById("input_5").value =( getRandom5() );
        document.getElementById("input_X").value =( getRandomX() );
}
<body onload="myFunction(), myFunction2()">

<select onchange="myFunction(), myFunction2()"  id="select">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
<option value="4"> 4 </option>
<option value="5"> 5 </option></select>

      <br>
         1 <input  type="text" id="input_1"/><br>
         2 <input  type="text" id="input_2"/><br>
          3 <input  type="text" id="input_3"/><br>
         4 <input  type="text" id="input_4"/><br>
         5  <input  type="text" id="input_5"/><br>
    X <input  type="text" id="input_X"/>
  

1 个答案:

答案 0 :(得分:1)

这不是一个很好的解决方案,但是您可以执行“ while”循环,该循环将第6个输入随机化,直到其不同为止。

function myFunction() {
    var input1 = getRandom1();
    var input2 = getRandom2();
    var input3 = getRandom3();
    var input4 = getRandom4();
    var input5 = getRandom5();
    var input6 = getRandomX();
    document.getElementById("input_1").value = input1;
    document.getElementById("input_2").value = input2;
    document.getElementById("input_3").value = input3;
    document.getElementById("input_4").value = input4;
    document.getElementById("input_5").value = input5;
    while (input6==input1 || input6==input2 || input6==input3 || input6==input4 || input6==input5) {
        input6 = getRandomX();
    }
    document.getElementById("input_X").value = input6;
}

一种更好的方法是在随机选择前5个输入后生成第6个输入的名称数组,因此它将不包含先前选择的值。