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);
  }

我的 2 个问题是:
1)如何确保我的变量 dest1 和 dest2 不相同?我希望它从 myVacations 数组中提取 2 个不同的选项。

和 2) 我可以让警报正常工作,但不是警报,我希望 dest1 和 dest2 的结果出现在文档中的跨度标签 id'd Span1 和 Span2 中。我只是在想如何做到这一点。
谢谢!

4

2 回答 2

2

首先,使用地板,而不是圆形,你不希望你的索引是长度:

 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>

然后填充它们:

document.getElementById("d1").innerHTML = dest1;
document.getElementById("d2").innerHTML = dest2;
于 2013-03-21T22:26:56.420 回答
0

// 我假设 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]; 

}
于 2013-03-21T22:34:50.033 回答