在javascript中将选择和输出变量随机化为span标记

在javascript中将选择和输出变量随机化为span标记,javascript,Javascript,我有以下javascript代码: var doNewPoll = function(){ var vacationIndex = Math.round(Math.random(myVacations.length)); var dest1 = myVacations[vacationIndex]; var dest2 = myVacations[vacationIndex]; alert(dest1); alert(dest2); } 我的两个问题是: 1) 如何确保

我有以下javascript代码:

var doNewPoll = function(){
  var vacationIndex = Math.round(Math.random(myVacations.length));
  var dest1 = myVacations[vacationIndex];
  var dest2 = myVacations[vacationIndex];
  alert(dest1);
  alert(dest2);
  }
我的两个问题是:
1) 如何确保变量dest1和dest2不相同?我希望它从myVacations数组中提取两个不同的选项。

2)我可以让警报正常工作,但我希望dest1和dest2的结果显示在文档中的span标记id'd Span1和Span2中,而不是警报。我只是在想怎么做。

谢谢

首先,使用floor,而不是round,您不希望索引是长度:

 Math.floor(Math.random(myVacations.length));
然后,最容易避免重复的方法就是循环,直到第二个数字与第一个不同。当然,这意味着您必须构建另一个索引:

var index1 = Math.floor(Math.random(myVacations.length));
var index2 = index1;
while (index2==index1) index2 = Math.floor(Math.random(myVacations.length));
var dest1 = myVacations[index1];
var dest2 = myVacations[index2];
要使文档显示在span中,最简单的方法是从当前的元素开始:

<span id=d1></span>
<span id=d2></span>

//我假设span1和span2是这些元素的id

var doNewPoll = function(myVacations, span1, span2){
  var vacationIndex1 = Math.round(Math.random(myVacations.length));
  var vacationIndex2 = null; 
  do{ 
     vacationIndex2 = Math.round(Math.random(myVacations.length)); 
  } while (vacationIndex2 == vacationIndex); 

  document.getElementById(span1).innerHTML = myVacations[vacationIndex1]; 
  document.getElementById(span2).innerHTML = myVacations[vacationIndex2]; 

}

此外,由于索引存储在一个变量中,
dest1
dest2
应该始终相同,前提是
myVacations
在这些行之间没有变化。所以你需要两个
Math.floor(Math.random(myVacations.length))行。@我用你的建议更新了我的代码,现在我无法在浏览器中预览页面-它只是不断旋转,从不加载。有什么想法吗?doNewPoll函数被设置为只运行onload,那么它是否被困在了循环中?正如我在前面的评论中提到的,我无法让这个方法工作,所以我使用了一个完全不同的方法。
var doNewPoll = function(myVacations, span1, span2){
  var vacationIndex1 = Math.round(Math.random(myVacations.length));
  var vacationIndex2 = null; 
  do{ 
     vacationIndex2 = Math.round(Math.random(myVacations.length)); 
  } while (vacationIndex2 == vacationIndex); 

  document.getElementById(span1).innerHTML = myVacations[vacationIndex1]; 
  document.getElementById(span2).innerHTML = myVacations[vacationIndex2]; 

}