我有一张正在使用jQuery和websanova / wScratchPad创建的刮刮卡。
便签本可以很好地工作,但是一旦显示了50%的表面,便应该弹出一个新的容器和一个按钮。它不是。
这是故障服务器https://best-gambler.glitch.me/
的链接我已经在线搜索了一种解决方案,但是还没有找到解决方案。
这是HTML文件
<html lang="en"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700italic,700" rel="stylesheet" type="text/css">
<title>Scratch Card</title>
<style type="text/css">
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
}
.scratchpad{
width: 450px;
height: 445px;
border: solid 10px #FFFFFF;
margin:0 auto;
}
body {
background:#efefef;
}
.scratch-container {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
width:100%;
}
@media only screen and (max-width : 480px) {
.scratchpad {width:400px;height:396px;}
.scratch-container {width:400px !important;}
}
/* Custom, iPhone Retina */
@media only screen and (max-width : 320px) {
.scratchpad {width:290px;height:287px;}
.scratch-container {width:290px !important;}
}
.promo-container {
background:#FFF;
border-radius:5px;
-moz-border-radius:5px;
-webkit-border-radius:5px;
width:450px;
padding:20px;
margin:0 auto;
text-align:center;
font-family:'Open Sans', Arial,Sans-serif;
color:#333;
font-size:16px;
margin-top:20px;
}
.btn {
background:#56CFD2;
color:#FFF;
padding:10px 25px;
display:inline-block;
margin-top:15px;
text-decoration:none;
font-weight:600;
text-transform:uppercase;
border-radius:3px;
-moz-border-radius:3px;
-webkit-border-radiuss:3px;
}
</style>
</head>
<body>
<div class="scratch-container">
<div id="promo" class="scratchpad"></div>
</div>
<div class="promo-container" style="display:none;">
<div class="promo-code"></div>
<a href="www.we-know-fun.com" target="_blank" class="btn">Register Now</a>
</div>
<script src="//code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="/wScratchPad.min.js" type="text/javascript"> </script>
<script type="text/javascript">
var promoCode = '';
var bg1 = 'https://cdn.glitch.com/2c225b7b-6134-4f2b-9842-1d5d060d9cd4%2Farcher-slideGreen.png';
var bg2 = 'https://cdn.glitch.com/2c225b7b-6134-4f2b-9842-1d5d060d9cd4%2Farcher-slideGreen.png';
var bg3 = 'https://cdn.glitch.com/2c225b7b-6134-4f2b-9842-1d5d060d9cd4%2Farcher-slideGreen.png';
var bgArray= [ bg1, bg2, bg3 ],
selectBG = bgArray[Math.floor(Math.random() * bgArray.length)];
if (selectBG == bg1) {
promoCode = 'SCRATCH400';
} else if (selectBG == bg2) {
promoCode = 'SCRATCH500';
} if (selectBG == bg3) {
var promoCode = '';
}
$('#promo').wScratchPad({
// the size of the eraser
size : 70,
// the randomized scratch image
bg: selectBG,
// give real-time updates
realtime : true,
// The overlay image
fg: 'https://cdn.glitch.com/2c225b7b-6134-4f2b-9842-1d5d060d9cd4%2Foverlay.png',
// The cursor (coin) image
'cursor': 'url("https://cdn.glitch.com/2c225b7b-6134-4f2b-9842-1d5d060d9cd4%2Fcoin1.png") 5 5, default',
scratchMove: function (percent) {
// Show the plain-text promo code and call-to-action when the scratch area is 50% scratched
if ((percent > 50) && (promoCode != '')) {
$('.promo-container').show();
$('body').removeClass('not-selectable');
$('.promo-code').html('Your code is: ' + promoCode);
}
}
});
</script>
</body>
</html>
应该做的是,一旦“刮擦”了50%或更多的表面,则显示一个单独的容器,其中包含一些文本和一个按钮。
答案 0 :(得分:0)
您的scratchMove
函数应带有一个代表鼠标移动事件的附加参数e
。我认为您错过了documentation。我只是在本地对其进行了测试,并且可以正常工作。
另外,请注意在该if-else语句promoCode
中重新初始化var promoCode = '';
变量。如果图像不同并且promoCode将为bg3
(由于bg1,bg2和bg3相等,则为true),将无法正常工作。
scratchMove: function (e, percent) {
console.log(percent);
if ((percent > 50) && (promoCode != '')) {
$('.promo-container').show();
$('body').removeClass('not-selectable');
$('.promo-code').html('Your code is: ' + promoCode);
}
}
但是,您可以自己进行测试并查看结果:)
干杯!
以后的修改:
您说它不起作用...但是即使在网上也能很好地起作用。请查看this jsfiddle。很抱歉,本文结尾处的长js代码很长,但是我没有其他选择可以包含自定义库。我想在此处制作一个jsfiddle或使用指向该库的链接向您展示它的工作原理,但是我没有找到刮刮板的CDN库,并且StackOverflow不允许包含来自github的js文件。
无论如何,我建议您注意本节:
if (selectBG == bg1) {
promoCode = 'SCRATCH400';
} else if (selectBG == bg2) {
promoCode = 'SCRATCH500';
} if (selectBG == bg3) {
var promoCode = '';
}
那是我改变的:
if (selectBG === bg1) {
promoCode = 'SCRATCH400';
} else if (selectBG === bg2) {
promoCode = 'SCRATCH500';
} else if (selectBG === bg3) {
promoCode = '';
}
我使用了3张来自互联网的随机图片。另外,请注意,由于条件if ((percent > 50) && (promoCode != ''))
,如果生成的图像是第三张图像,则不会弹出任何图像。为什么?因为您在上述if-else语句中将promoCode
设置为空字符串。我不知道这是否是您想要的行为。