-1

我创建了一个 javascript 函数来随机化 72 个条目的 json 文件中的 6 个结果,我正试图将它们返回给一个类。但是,它只返回一个结果。我想知道是否有人可以帮助我将字符串返回给班级?或者一个接一个地显示结果。

这是我的 javascript

<script>
function getitems() {
    var arr = [];
        for (var i = 0, l = 6; i < l; i++) {
            arr.push(Math.floor((Math.random()*72)+1))
        }
    $.getJSON('items.json',function(data) {
        for ( var i = 0; i < 6; i++ ) {
            var items = data.result.items[arr[i]].item.toString();
            $('.item-name').html(items);
        }
    }).error(function(){
    });
}
    $('#refreshItem').click(function() { 
    getitems();

});
</script>
4

2 回答 2

0

这段代码只是用这一行将一个接一个地填充到同一组 HTML 元素中$('.item-name').html(items);

    for ( var i = 0; i < 6; i++ ) {
        var items = data.result.items[arr[i]].item.toString();
        $('.item-name').html(items);
    }

所以,你只会arr[5]在所有$('.item-name')元素中结束。

目前还不清楚你想要的结果是什么。请进一步描述您要完成的工作。


如果您尝试从返回的所有内容中选择六个随机结果,并将它们放入class="item-name"已经存在的六个项目中的每一个中,那么您可以这样做:

function getitems() {
    var arr = [];
    for (var i = 0; i < 6; i++) {
        arr.push(Math.floor((Math.random()*72)+1));
    }
    $.getJSON('items.json',function(data) {
        var items = $('.item-name');
        for ( var i = 0; i < 6; i++ ) {
            var result = data.result.items[arr[i]].item.toString();
            items.eq(i).html(result);
        }
    }).error(function(){
    });
}

请注意,这不能保证六个随机结果中的每一个都是不同的。您可能会重复相同的结果。我也不确定为什么要添加1到随机结果中,因为我会假设 data.result.items 是一个从零开始的数组,因此您也希望包含0索引。


如果您还想确保每个随机结果都是唯一的,您可以这样做:

function getitems() {
    var arr = [], used = {}, val;
    for (var i = 0; i < 6; i++) {
        do {
            val = Math.floor((Math.random()*72)+1);
        } while (!(val in used));
        used[val] = true;
        arr.push(val);
    }
    $.getJSON('items.json',function(data) {
        var items = $('.item-name');
        for ( var i = 0; i < 6; i++ ) {
            var result = data.result.items[arr[i]].item.toString();
            items.eq(i).html(result);
        }
    }).error(function(){
    });
}
于 2013-10-29T21:25:45.097 回答
0

利用

$('.item-name').append(items);

代替:

$('.item-name').html(items);
于 2013-10-29T21:42:13.840 回答