时间:2015-12-16 11:42:35

标签: javascript html

我对编码很陌生,所以如果我的问题很愚蠢,请耐心等待(并且请将任何答案写成代码,否则我将不会得到它......)。我正在进行Qualtrics调查页面,其中有两个可选答案 - 每个答案都是一个项目列表。我试图改变列表,以便每个参与者以不同的顺序查看它们。我从网上获得了以下这些代码。

我的HTML列表如下所示:

<div id="enriched">
    <div class="list_item">lots of sunshine</div>
    <div class="list_item">gorgeous beaches and coral reefs</div>
    <div class="list_item">ultra-modern hotel</div>
    <div class="list_item">very cold water</div>
    <div class="list_item">very strong winds</div>
    <div class="list_item">no nightlife</div>
</div>

我的javascript代码是这样的:

var list = document.getElementById("enriched");
function shuffleNodes() {
    var nodes = list.children, i = 0;
    nodes = Array.prototype.sort.call(nodes);
    while(i < nodes.length) {
       list.appendChild(nodes[i]);
       ++i;
    }
}
shuffleNodes();

但是,它只会从原始版本中删除一次列表。之后,每个下一个参与者都会看到该版本没有进一步的洗牌。之后,我需要以某种方式使它适用于两个列表..我有点紧张。

我也试过一个数组代码,但是我无法使它工作。

2 个答案:

答案 0 :(得分:0)

正如函数名称所示,行nodes = Array.prototype.sort.call(nodes);不会对内容进行随机播放 - 它会对其进行排序。所以每次都会得到一致的订单。

您可能希望看到How to randomize (shuffle) a JavaScript array?进行改组实施。

答案 1 :(得分:0)

这应该创建一个新的random_list数组:

var random_list = [];

for ( i = 0; i < nodes.length; i ++ ) {
  random_list.push( nodes[i].innerHTML );
}

random_list.sort( function() {
  return Math.random() - 0.5;
});