質問編集履歴

2

書式の改善

2018/05/09 04:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -31,3 +31,581 @@
31
31
  }
32
32
 
33
33
  ```
34
+
35
+ 以下jsの中身です。
36
+
37
+ ```
38
+
39
+ var leftover = 3; //ルーレットの残回数
40
+
41
+ var result = 0;
42
+
43
+ var rCurrent = 0;
44
+
45
+ var rCount = 0;
46
+
47
+ var waitTimer = 500;
48
+
49
+ var isStopClick = false;
50
+
51
+ var isStop = false;
52
+
53
+ var isIE6 = false;
54
+
55
+ var isIE7 = false;
56
+
57
+ var userAgent = window.navigator.userAgent.toLowerCase();
58
+
59
+ var appVersion = window.navigator.appVersion.toLowerCase();
60
+
61
+
62
+
63
+ function getLeftOver() {
64
+
65
+ var cookieName = 'leftover';
66
+
67
+ var leftover = getCookie(cookieName);
68
+
69
+
70
+
71
+ if(leftover === undefined){
72
+
73
+ leftover = 3;
74
+
75
+ }
76
+
77
+ return leftover;
78
+
79
+ }
80
+
81
+
82
+
83
+ function getResultFromCookie(){
84
+
85
+ var cookieName = 'result';
86
+
87
+ var stoppedResult = getCookie(cookieName);
88
+
89
+
90
+
91
+ if (stoppedResult === undefined) {
92
+
93
+ stoppedResult = '';
94
+
95
+ }
96
+
97
+ return stoppedResult;
98
+
99
+ }
100
+
101
+
102
+
103
+ function getCookie(cookieName){
104
+
105
+ var allcookies = document.cookie;
106
+
107
+ var position = allcookies.indexOf(cookieName);
108
+
109
+ var result = undefined;
110
+
111
+
112
+
113
+ if(position !== -1){
114
+
115
+
116
+
117
+ var startIndex = position + cookieName.length;
118
+
119
+ var endIndex = allcookies.indexOf( ';', startIndex );
120
+
121
+
122
+
123
+ if (endIndex === -1){
124
+
125
+ endIndex = allcookies.length;
126
+
127
+ }
128
+
129
+
130
+
131
+ result = allcookies.substring(startIndex + 1, endIndex);
132
+
133
+ }
134
+
135
+
136
+
137
+ return result;
138
+
139
+ }
140
+
141
+
142
+
143
+ function setLeftOver(leftover){
144
+
145
+
146
+
147
+ if(Number.isNaN(leftover) || (leftover < 1 || leftover > 3)){
148
+
149
+ leftover = 3;
150
+
151
+ }
152
+
153
+ setCookie("leftover", leftover);
154
+
155
+ }
156
+
157
+
158
+
159
+ /**
160
+
161
+ ルーレットで止まった結果をcookieに保存する関数
162
+
163
+ */
164
+
165
+ function setResultToCookie(result){
166
+
167
+
168
+
169
+ // 登録されているマスを取得
170
+
171
+ var saved_result = getResultFromCookie();
172
+
173
+ setCookie("result", String(result) + String(saved_result));
174
+
175
+ }
176
+
177
+
178
+
179
+ function setCookie(cookieName, cookieValue){
180
+
181
+ // var position = allcookies.indexOf(cookieName);
182
+
183
+
184
+
185
+ document.cookie = cookieName + "=" + cookieValue;
186
+
187
+ }
188
+
189
+
190
+
191
+ function startRoulette() {
192
+
193
+ $("#r0").hide();
194
+
195
+ $("#rouleteStart").fadeOut("fast");
196
+
197
+ $("#rouleteStop").delay(500).fadeIn("fast");
198
+
199
+
200
+
201
+ // 既に止まったマスを取得
202
+
203
+ var saved_result = getResultFromCookie();
204
+
205
+
206
+
207
+ if(saved_result.length === 3){
208
+
209
+ setCookie("result", String(result) + String(saved_result));
210
+
211
+ }
212
+
213
+
214
+
215
+ // ↓止まるマスを決めている
216
+
217
+ result = Math.floor(Math.random() * 3 + 1);
218
+
219
+
220
+
221
+ /*
222
+
223
+ Ex)
224
+
225
+ saved_result : '31'
226
+
227
+ result : '1'
228
+
229
+
230
+
231
+ var index = saved_result.indexOf(result);
232
+
233
+
234
+
235
+ while(index !== -1){
236
+
237
+
238
+
239
+ if(saved_result === ''){
240
+
241
+ break;
242
+
243
+ }
244
+
245
+ result = Math.floor(Math.random() * 3 + 1);
246
+
247
+ index = saved_result.indexOf(result);
248
+
249
+
250
+
251
+
252
+
253
+ // console.log('index : ' + index);
254
+
255
+ // console.log('result : ' + result);
256
+
257
+ // console.log('saved_result : ' + saved_result);
258
+
259
+ }
260
+
261
+
262
+
263
+ rotateRoulette();
264
+
265
+
266
+
267
+ }
268
+
269
+
270
+
271
+ function rotateRoulette() {
272
+
273
+ rCurrent = Math.floor(Math.random() * 3) + 1;
274
+
275
+ changeNextPanel();
276
+
277
+ $("#rouleteStop").click(stopRoulette);
278
+
279
+ }
280
+
281
+
282
+
283
+ function changeNextPanel() {
284
+
285
+ rCurrent++;
286
+
287
+ if (rCurrent > 3){
288
+
289
+ rCurrent = 1;
290
+
291
+ }
292
+
293
+
294
+
295
+ for (var i = 1; i < 4; i++) {
296
+
297
+ if (i == rCurrent) {
298
+
299
+ $("#r" + i).show();
300
+
301
+ } else {
302
+
303
+ $("#r" + i).hide();
304
+
305
+ }
306
+
307
+ }
308
+
309
+ rCount++;
310
+
311
+ if (!isStopClick) {
312
+
313
+ if (rCount <= 3) {
314
+
315
+ // none
316
+
317
+ } else if (rCount <= 4) {
318
+
319
+ waitTimer = 200;
320
+
321
+ } else if (rCount <= 6) {
322
+
323
+ waitTimer = 150;
324
+
325
+ } else if (rCount <= 7) {
326
+
327
+ waitTimer = 120;
328
+
329
+ } else {
330
+
331
+ waitTimer = 90;
332
+
333
+ }
334
+
335
+ } else {
336
+
337
+ if (rCount <= 1) {
338
+
339
+ // none
340
+
341
+ } else if (rCount <= 2) {
342
+
343
+ waitTimer = 120;
344
+
345
+ } else if (rCount <= 3) {
346
+
347
+ waitTimer = 150;
348
+
349
+ } else if (rCount <= 4) {
350
+
351
+ waitTimer = 190;
352
+
353
+ } else if (rCount <= 5) {
354
+
355
+ waitTimer = 230;
356
+
357
+ } else if (rCount <= 6) {
358
+
359
+ waitTimer = 300;
360
+
361
+ } else if (rCount <= 7) {
362
+
363
+ waitTimer = 600;
364
+
365
+ } else {
366
+
367
+ if (rCurrent === result) {
368
+
369
+ isStop = true;
370
+
371
+ }
372
+
373
+ }
374
+
375
+ }
376
+
377
+
378
+
379
+ if (!isStop) {
380
+
381
+ $.wait(waitTimer).done(changeNextPanel);
382
+
383
+ } else {
384
+
385
+ blinkPanel();
386
+
387
+ }
388
+
389
+ }
390
+
391
+
392
+
393
+ function stopRoulette() {
394
+
395
+ $("#rouleteStop").fadeOut("fast");
396
+
397
+ isStopClick = true;
398
+
399
+ rCount = 0;
400
+
401
+ }
402
+
403
+
404
+
405
+ function blinkPanel() {
406
+
407
+ $("#r0").delay(600).fadeIn(0).delay(200).fadeOut(0).delay(200).fadeIn(0).delay(200).fadeOut(0).delay(200).fadeIn(0).delay(200).fadeOut(0);
408
+
409
+ $.wait(2e3).done(showResult);
410
+
411
+ }
412
+
413
+
414
+
415
+ function showResult() {
416
+
417
+ var e = "";
418
+
419
+ var leftOver = 0;
420
+
421
+
422
+
423
+ switch (result) {
424
+
425
+ case 1: // 大吉
426
+
427
+ e = "red";
428
+
429
+ break;
430
+
431
+ case 2: // 中吉
432
+
433
+ e = "blue";
434
+
435
+ break;
436
+
437
+ case 3: // 凶
438
+
439
+ e = "green";
440
+
441
+ break
442
+
443
+ }
444
+
445
+ $(".result > img").attr("src", "img/result_" + e + ".png");
446
+
447
+
448
+
449
+ // 結果の表示
450
+
451
+ leftOver = getLeftOver();
452
+
453
+ // id = resultArea の中の class = returnBtn の中の img の src
454
+
455
+
456
+
457
+ leftOver--;
458
+
459
+ $("#resultArea > .returnBtn > img").attr("src", "img/btn_return_d" + leftOver + ".png"); // 2 -> 1 -> 0
460
+
461
+
462
+
463
+ // 残回数をセットする
464
+
465
+ setLeftOver(leftOver);
466
+
467
+
468
+
469
+ // 止まったマスをcookieにセットする関数を呼ぶ
470
+
471
+ setResultToCookie(result);
472
+
473
+
474
+
475
+ $("#resultArea").css({
476
+
477
+ visibility: "visible"
478
+
479
+ }).animate({
480
+
481
+ opacity: "1"
482
+
483
+ }, {
484
+
485
+ duration: "fast"
486
+
487
+ })
488
+
489
+ }
490
+
491
+
492
+
493
+ function backClick() {
494
+
495
+ rCount = 0;
496
+
497
+ result = 0;
498
+
499
+ waitTimer = 500;
500
+
501
+ isStop = isStopClick = false;
502
+
503
+ $("#resultArea").animate({
504
+
505
+ opacity: "0"
506
+
507
+ }, {
508
+
509
+ duration: "fast",
510
+
511
+ complete: function() {
512
+
513
+ $(this).css({
514
+
515
+ visibility: "hidden"
516
+
517
+ })
518
+
519
+ }
520
+
521
+ });
522
+
523
+ $(".result>img").attr("src", "img/blank.png");
524
+
525
+ $("#r0").show();
526
+
527
+ for (var e = 1; e < 6; e++) {
528
+
529
+ $("#r" + e).hide()
530
+
531
+ }
532
+
533
+ $("#rouleteStart").delay(500).fadeIn();
534
+
535
+ }
536
+
537
+
538
+
539
+
540
+
541
+ // ページが読み込まれた時に実行される
542
+
543
+ // $jQuery.document.ready(function){...} ??
544
+
545
+ $(function() {
546
+
547
+
548
+
549
+ // IE判定
550
+
551
+ if (userAgent.indexOf("msie") != -1) {
552
+
553
+ if (appVersion.indexOf("msie 6.") != -1) {
554
+
555
+ isIE6 = true;
556
+
557
+ } else if (appVersion.indexOf("msie 7.") != -1) {
558
+
559
+ isIE7 = true;
560
+
561
+ }
562
+
563
+ }
564
+
565
+
566
+
567
+ $("#rouleteStop").hide();
568
+
569
+ for (var e = 1; e < 6; e++) {
570
+
571
+ $("#r" + e).hide();
572
+
573
+ }
574
+
575
+ $(".returnBtn").bind("click", backClick);
576
+
577
+ $("#rouleteStart").bind("click", startRoulette);
578
+
579
+ });
580
+
581
+
582
+
583
+ $.wait = function(e) {
584
+
585
+ var t = new $.Deferred;
586
+
587
+ setTimeout(function() {
588
+
589
+ t.resolve(e);
590
+
591
+ }, e);
592
+
593
+ return t.promise();
594
+
595
+ }
596
+
597
+
598
+
599
+
600
+
601
+ ```
602
+
603
+
604
+
605
+ [cookieクリア]でサイト探しているのですが、思った回答がなくて困っています。
606
+
607
+ document.cookie = "value=;";
608
+
609
+ など試しましたがルーレットが動作しないといった事象が起こりました。
610
+
611
+ お手柔らかにお願い致します。

1

初心者アイコン

2018/05/09 04:57

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes