【问题标题】:JavaScript array spliceJavaScript 数组拼接
【发布时间】:2015-05-18 07:29:48
【问题描述】:

你好 StackOverflow 社区!

目前我完全坚持我的代码,尝试了不同的方法来在选择时从数组中删除一个值,我知道我必须为它使用拼接,但由于某种原因它没有做我想要的做

由于我的英文不好,网页很难解释,所以我做了一些截图,希望当你看到我想做的事情时你会明白!

这是用户在访问网页时会看到的内容,它基本上是一个 lenormand 游戏。用户必须将 3 张卡片拖入卡片下方的灰色框中。

一旦他将3张卡片拖到盒子上,用户就可以点击图像(卡片)来翻转它们(翻转)

这很好用,唯一的问题是我不希望用户两次甚至三次选择相同的卡片,因为我用数组做这个,我认为我应该使用 Splice 函数,但到目前为止,没有结果!

对于 JavaScript 代码,这里是 JSFiddle http://jsfiddle.net/dkk2nqyg/

这里的某个地方,我必须添加拼接

$(function () {
var cars = ["2", "3", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "4"];
var rand = cars[Math.floor(Math.random()*cars.length)];

    $(".cards img").each(function(index) {
        $(this).wrap('<div class="front"></div>')
           .parent().wrap('<div class="flipper"></div>')
           .parent().wrap('<div class="flip-container"></div>')
           .append('<div class="back"><img src="./kaart/'+cars[Math.floor(Math.random()*cars.length)]+'.png"</img> </div>');
});

我尝试了很多解决方案,但问题是我需要在这里拼接,至少,我认为:

.append('<div class="back"><img src="./kaart/'+cars[Math.floor(Math.random()*cars.length)]+'.png"</img> </div>');

我很乐意解决这个问题,我希望 StackOverflow 可以为我提供我想要的帮助 :)

谢谢!

【问题讨论】:

    标签: javascript jquery html css arrays


    【解决方案1】:

    您可以使用splice()从数组中删除一个项目,因为splice返回一个数组,那么您可以访问索引0处的元素以获取获取的src值

    '<div class="back"><img src="./kaart/' + cars.splice(Math.floor(Math.random() * cars.length),1)[0] + '.png"</img> </div>'
    

    【讨论】:

    • 你能做一个jsfiddle吗?
    • 谢谢!代码再次运行,但是单击时它没有显示卡片的背面,找不到图像i.imgur.com/ZFE0boU.png数组值是图片的名称顺便说一句;)
    • @HaltlolXD jsfiddle.net/arunpjohny/dkk2nqyg/5你能创建一个问题的演示
    • jsfiddle.net/dkk2nqyg/8 如你所见,拖动框中的所有卡片,有些会加载,有些根本不会加载;)
    • 似乎他没有将数组的值作为图像的 url,imgur.com/NEL3MaH '
      ' 还想说非常感谢你的帮助!
    【解决方案2】:

    首先,将随机数放入一个单独的变量中

    var rnd = Math.floor(Math.random()*cars.length);
    var rand = cars[rnd];
    

    然后从数组中删除该特定项

    cars.splice(rnd, 1);
    

    干杯 回复

    【讨论】:

    • jsfiddle.net/dkk2nqyg/1 喜欢这个?恐怕不工作,一直给我 3 倍相同的卡:p
    • 你能做一个jsfiddle吗?
    • 嗨,抱歉,我的代码中有一个小错误,这里是工作小提琴的链接jsfiddle.net/fmszrtez
    • 哦,抱歉,忘记投票 +1,obv 帮助了我一些 + 的努力
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2010-12-24
    • 2018-10-19
    • 2015-02-22
    • 2018-11-16
    • 1970-01-01
    • 2013-02-13
    相关资源
    最近更新 更多