(函数消息(){ var ranNumber=数学地板((Math.random()*5)+0); var randomMsg=[ “字符串一”, “字符串2”, “字符串三”, “字符串四”, “字符串5” ]; var currentMsg=randomMsg[Math.floor((Math.random()*5)+0)]; var prevMsg=“”; document.getElementById(“intro”).innerHTML=currentMsg; document.getElementById(“intro”).onclick=函数(){ var ranNum=数学地板((Math.random()*5)+0); currentMsg=随机消息[ranNum]; if(prevMsg==currentMsg){ var anotherMsg=“”; 如果(ranNum>=0&&ranNum<4){ anotherMsg=randomMsg[ranNum+1]; } 其他{ anotherMsg=randomMsg[ranNum-1]; } document.getElementById(“intro”).innerHTML=anotherMsg; prevMsg=另一条消息;// 将prevMsg设置为另一个Msg }其他{ document.getElementById(“intro”).innerHTML=currentMsg; prevMsg=当前消息;// 将prevMsg设置为currentMsg }; }; })();
-
1 因为“ 它有效, “你的问题是供审查的,我建议你在 代码审查 ,而不是在这里 堆栈溢出 . – 大卫·托马斯 评论 2015年5月24日1:16
6个答案
var消息=[ “字符串一”, “字符串2”, “字符串三”, “字符串”, “字符串5”, “string six”/*添加任意数量的值*/ ];
函数randWithout(n,arr){ var res=[]; 对于(var i=0;i<arr.length;i+=1){ 如果(i!==n){ res.push(i); } } return res[Math.floor(Math.random()*(arr.length-1))]; }
函数randNumber(arr){ var rand=Math.floor(Math.random()*arr.length); 回报率; }
(函数消息(){ var intro=文档.getElementById(“intro”); var currNumber=随机数(msg); intro.innerHTML=msg[currNumber]; var clickNumber=randWithout(currNumber,msg); intro.onclick=函数(){ intro.innerHTML=消息[单击数字]; clickNumber=randWithout(单击数字,消息); } })()
-
谢谢你。 很容易理解。 我想不出是什么 return res[Math.floor(Math.random()*(arr.length-1))]; 尽管如此,你能解释一下吗? – 雷尔夫 评论 2015年5月24日13:23 -
在 函数randWithout ,从数组中推送所有索引(此处为消息), 除了 中的索引 当前编号 ,放入结果数组中。 长度为 棱长-1 。这里消息数组的长度为6,结果数组的长度必须为5。 例如 res=[0,1,3,4,5] 。这里的当前数字是2。 我们不想马上把这个作为号码。 数学地板(Math.random()*5) 来自(0,1,2,3,4)的随机数。 res[数学地板(Math.random()*(arr.length-1))] 例如 雷斯[3] 它来自[0,1,3,4,5]4。 – 用户3589620 评论 2015年5月24日15:40
randomMsg.sort(function(){return Math.random()-0.5});// 洗牌
var shuffedMsg=randomMsg.slice().sort(function(){return Math.random()-0.5});
函数洗牌(arr){ return arr.sort(function(){return Math.random()-0.5}); } var shuffledMsg=洗牌(洗牌(shuffle(randomMsg.slice()));
(函数消息(){ var currentMsg,prevMsg; var ranNumber=Math.floor((Math.random()*5)+0); var randomMsg=[ “字符串一”, “字符串2”, “字符串三”, “字符串四”, “字符串5” ]; prevMsg=(prevMs g)? 前一条消息:“”; var currentMsg=随机消息[ranNumber]; document.getElementById(“intro”).innerHTML=currentMsg; document.getElementById(“intro”).onclick=function(){ var ranNum=数学地板((Math.random()*5)+0); currentMsg=随机消息[ranNum]; if(前消息===当前消息){ ranNum=(ranNum===4)? 0:ranNum++; currentMsg=randomMsg[ranNumber]; } document.getElementById(“intro”).innerHTML=currentMsg; prevMsg=当前消息; }; })();
(函数消息(){ var introElem=文档.getElementById(“intro”); var randomMessages=[ “字符串一”, “字符串2”, “字符串三”, “字符串四”, “字符串五” ]; var randomMessagesLength=randomMessages.length; introElem.innerHTML=获取随机消息(introElem); introElem.onclick=函数(){ introElem.innerHTML=获取随机消息(introElem); }; 函数getRandomMessage(元素){ var isNewRandMessage=false; var randMessage=“”; 做{ randNumber=数学地板(Math.random()*randomMessagesLength); randMessage=随机消息[randNumber]; if(elem.innerHTML!=随机消息){ isNewRandMessage=true; } }while(!is新随机消息); return randMessage; } })();
var messages=[“string one”,“string two”,“string three”,”string four“,”string-five“]; var i=-1, intro=文档.getElementById(“intro”); (intro.onclick=函数(){ 而(i==(i=Math.floor((Math.random()*messages.length))); intro.textContent=消息[i]; })();
<h1 id=“简介”></h1>
var messages=[“string one”,“string two”,“string three”,”string four“,”string-five“]; var i=数学地板((Math.random()*messages.length)), intro=文档.getElementById(“intro”); (intro.onclick=函数(){ intro.textContent=消息[i]; var rand=Math.floor((Math.random()*(messages.length-1))); i=兰特+(兰特>=i); })();
<h1 id=“intro”></h1>
(函数消息(){ var randomMsg=[ “字符串一”, “字符串2”, “字符串三”, “字符串四”, “字符串5” ]; var random=函数(){ return Math.floor((Math.random()*(randomMsg.length))+0); } var tmpMsg; var ranNumber=随机(); var currentMsg=随机消息[ranNumber]; tmpMsg=randomMsg.splice(ranNumber,1)[0]; document.getElementById(“intro”).innerHTML=currentMsg; document.getElementById(“intro”).onclick=function(){ ranNumber=随机(); currentMsg=randomMsg[ranNumber]; document.getElementById(“intro”).innerHTML=currentMsg; randomMsg.push(tmpMsg); tmpMsg=randomMsg.splice(ranNumber,1)[0]; if(randomMsg.length===0){ randomMsg=tmpMsg; tmpMsg=[]; } }; })();