Qiitaの記事を参考にしてフリックを実装してブラウザで動作を確認してみたら「Uncaught TypeError: Cannot read property 'originalEvent' of undefined」という風に表示されました。(1枚目の画像を左にフリックしたときにエラーが出ました)
なぜUncaught TypeErrorが表示されるのかを教えていただきたいです。
html
1<!doctype html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> 6<meta name="format-detection" content="telephone=no"> 7<title></title> 8<link rel="stylesheet" href="css/reset.css"> 9<link rel="stylesheet" href="css/base.css"> 10<link rel="stylesheet" href="css/style.css"> 11</head> 12<body> 13<div class="swipe-photo"> 14 <ul class="swipe-photo-container clearfix"> 15 <li class="swipe-photo-item"><img src="img/0.jpg" class="swipe-photo-thumbnail"></li> 16 <li class="swipe-photo-item"><img src="img/1.jpg" class="swipe-photo-thumbnail"></li> 17 <li class="swipe-photo-item"><img src="img/2.jpg" class="swipe-photo-thumbnail"></li> 18 <li class="swipe-photo-item"><img src="img/3.jpg" class="swipe-photo-thumbnail"></li> 19 <li class="swipe-photo-item"><img src="img/4.jpg" class="swipe-photo-thumbnail"></li> 20 <li class="swipe-photo-item"><img src="img/5.jpg" class="swipe-photo-thumbnail"></li> 21 </ul> 22</div> 23<script type="text/javascript" src="js/jquery.js"></script> 24<script type="text/javascript"> 25$(function(){ 26 var flickStart, flickMove, flickEnd; 27 28 $(".swipe-photo-item").on({ 29 "touchstart": function(){ 30 flickStart(); 31 }, 32 "touchmove": function(){ 33 flickMove(); 34 }, 35 "touchend": function(){ 36 flickEnd(); 37 } 38 }); 39 40 (function(){ 41 var slideWidth = $('.swipe-photo-item').outerWidth(); // .swipe-photo-itemの幅を取得して代入 42 var slideNum = $('.swipe-photo-item').length; // .swipe-photo-itemの数を取得して代入 43 var slideSetWidth = slideWidth * slideNum; // .swipe-photo-itemの幅×数で求めた値を代入 44 var slideCurrent = 0; // 現在地を示す変数 45 var direction, position; 46 47 $('.swipe-photo-container').css('width', slideSetWidth); // .swipe-photo-containerのスタイルシートにwidth: 上の変数を指定 48 49 // アニメーションを実行する即時変数 50 var sliding = function sliding(){ 51 // slideCurrentが0以下の場合 52 if(slideCurrent<0){ 53 slideCurrent = slideNum - 1; 54 55 // slideCurrentがslideNumを超えたら 56 }else if(slideCurrent > slideNum - 1){ 57 slideCurrent = 0; 58 } 59 $('.swipe-photo-container').animate({ 60 left: slideCurrent * -slideWidth 61 }); 62 } 63 64 // タッチイベントの処理内容 65 flickStart = function flickStart(event){ 66 position = getPosition(event); 67 direction = ''; // 一度リセットする 68 } 69 70 flickMove = function flickMove(event){ 71 if(position - getPosition(event) > 1){ 72 direction = 'left'; 73 }else if(position - getPosition(event) < 1){ 74 direction = 'right'; 75 } 76 } 77 78 flickEnd = function flickEnd(event){ 79 if(direction=='right'){ 80 slideCurrent--; 81 sliding(); 82 }else if(direction=='left'){ 83 slideCurrent++; 84 sliding(); 85 } 86 } 87 88 // 横方向の座標を取得 89 function getPosition(event){ 90 return event.originalEvent.changedTouches[0].pageX; 91 } 92 })(); 93}); 94</script> 95</body> 96</html>
css
1.swipe-photo { 2 position: relative; 3 width: 320px; 4 height: 240px; 5 margin: 0 auto; 6 overflow: hidden; 7} 8.swipe-photo-container { 9 position: absolute; 10 top: 0; 11 left: 0; 12} 13.swipe-photo-item { 14 float: left; 15} 16.swipe-photo-thumbnail { 17 width: 320px; 18 height: 240px; 19}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/11 02:20