前提
Javascriptを使用してWebサイトを構築しています。
clickイベントでボタンを押下後、さらにマウスの左右のクリックの判定によってUIに変化を加える処理中に思うような動作を得られませんでした。
下記ソースコードはその一例です。
実現したいこと
1.[クリック]ボタン押下→"色変化"出力(黒色)→マウス左クリック時には赤色に変化し、右クリック時には青色に変化する
2.赤/青色の変化は一度変化したら繰り返さない
発生している問題
[クリック]ボタン押下時に、左クリックの判定も入ってしまうため、赤色への変化がせず困っております。
どのように改善すれば上記の[実現したいこと]ができるでしょうか。ご教授いただければ幸いです。
該当のソースコード
javascript
1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 <title>Document</title> 8 </head> 9 <body> 10 <div id="container"> 11 <p1>右:青 左:赤</p1> 12 <button id="btn">クリック</button> 13 </div> 14 <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> 15 <script> 16 let btn = document.getElementById('btn'); 17 btn.onclick = function () { 18 console.log('クリック!!'); 19 let p = document.createElement('p'); 20 p.innerHTML = '色変化'; 21 btn.after(p); 22 23 $('html').one('click contextmenu', function (e) { 24 console.log(e.which); 25 if (e.which == 1) { 26 //左クリック 27 console.log('左クリック'); 28 if (!e.target.closest('#btn')) { 29 p.style.color = 'red'; 30 } 31 } else if (e.which == 3) { 32 //右クリック 33 console.log('右クリック'); 34 p.style.color = 'blue'; 35 } 36 }); 37 }; 38 </script> 39 </body> 40</html>
回答2件
あなたの回答
tips
プレビュー