質問するログイン新規登録

質問編集履歴

2

レイアウトを修正しました

2021/12/23 04:43

投稿

martini777
martini777

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,12 @@
1
+ ##実装したいこと
2
+ [サイト](https://techacademy.jp/magazine/28836)を参考に
3
+ 例えば卵焼き上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと卵焼きの各そのリンクに飛ぶ
4
+ 麻婆豆腐上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと麻婆豆腐の各そのリンクに飛ぶ
5
+ というシステムを作りたかったので、悩んでいる部分が解決できれば麻婆豆腐・唐揚げとコピペで半ば強制的に実装することは可能だと思うのですが、どのようにすればいいでしょうか。
6
+ ##悩んでいる部分
7
+ **document.getElementById("main").addEventListener**で卵焼き、麻婆豆腐、唐揚げ上で右クリックするとメニューが出現したため、
8
+ じゃmainの子要素であるcook1クラスを指定すればいいんだと思い**document.getElementById("main").getElementsByClassName('cook1').**を記述したところメニューが出現しなくなりました。どうしてなのでしょうか、mainの子要素であるcook1クラスを指定するという考えが間違えているのでしょうか。
9
+ ##コード
1
10
  ```html
2
11
  <!DOCTYPE html>
3
12
  <meta http-equiv="content-type" charset="utf-8">
@@ -53,12 +62,4 @@
53
62
  </script>
54
63
  </body>
55
64
  </html>
56
- ```
65
+ ```
57
- [サイト](https://techacademy.jp/magazine/28836)を参考に
58
- 例えば卵焼き上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと卵焼きの各そのリンクに飛ぶ
59
- 麻婆豆腐上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと麻婆豆腐の各そのリンクに飛ぶ
60
- というシステムを作りたかったのですが、どのように実装したらいいか分からず質問させていただきました。
61
- 追記
62
- **document.getElementById("main").addEventListener**で卵焼き、麻婆豆腐、唐揚げ上で右クリックするとメニューが出現したため、
63
- じゃmainの子要素であるcook1クラスを指定すればいいんだと思い**document.getElementById("main").getElementsByClassName('cook1').**を記述したところメニューが出現しなくなりました。どうしてなのでしょうか、mainの子要素であるcook1クラスを指定するという考えが間違えているのでしょうか。
64
- https://techacademy.jp/magazine/28836

1

どこで理解が詰まっているのかについて修正しました

2021/12/23 04:43

投稿

martini777
martini777

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,27 +1,64 @@
1
- ```ここに言語を入力
1
+ ```html
2
2
  <!DOCTYPE html>
3
+ <meta http-equiv="content-type" charset="utf-8">
3
- <html lang="ja">
4
+ <html>
4
- <head>
5
+ <head>
6
+ <title>JavaScriptでオリジナルの右クリックメニューを作成する方法</title>
7
+ <style>
8
+ #contextmenu{
9
+ display:none;
10
+ position:fixed;
11
+ left:0px;
12
+ top:0px;
13
+ width:200px;
14
+ height:100px;
15
+ border:1px solid #000;
16
+ background-color:#fff;
17
+ }
18
+ #contextmenu li{
19
+ cursor:pointer;
20
+ }
21
+ </style>
22
+ </head>
23
+ <body onContextmenu="return false;">
5
- <meta charset="UTF-8">
24
+ <div id="main">
6
- <title>Document</title>
25
+ <p class="cook1">卵焼き</p>
26
+ <p class="cook2">麻婆豆腐</p>
27
+ <p class="cook3">唐揚げ</p>
28
+ </div>
7
- <!--jquery,contextmenuのリンクは省略-->
29
+ <div id="contextmenu">
30
+ <ul>
31
+ <li onClick="menu1()">1.Wikipedia</li>
32
+ <li onClick="menu2()">2.cookpad</li>
33
+ </ul>
34
+ </div>
8
- <script>
35
+ <script>
36
+ window.onload = function(){
37
+ document.getElementById("main").getElementsByClassName('cook1').addEventListener('contextmenu',function (e){
38
+ document.getElementById('contextmenu').style.left=e.pageX+"px";
39
+ document.getElementById('contextmenu').style.top=e.pageY+"px";
40
+ document.getElementById('contextmenu').style.display="block";
41
+ });
42
+ document.body.addEventListener('click',function (e){
43
+ document.getElementById('contextmenu').style.display="none";
44
+ });
45
+ }
46
+ function menu1(){
47
+ open( "url", "_blank" ) ;
48
+ }
49
+ function menu2(){
50
+ open( "url", "_blank" ) ;
51
+ }
9
52
 
10
53
  </script>
11
- </head>
12
- <body>
13
- <div id="contextmenu">
14
- <ul>
15
- <li onClick="cook1()">卵焼き</li>
16
- <li onClick="cook2()">麻婆豆腐</li>
17
- <li onClick="cook3()">唐揚げ</li>
18
- </ul>
19
- </div>
20
- </body>
54
+ </body>
21
55
  </html>
22
56
  ```
23
- 下記サイトを参考に
57
+ [サイト](https://techacademy.jp/magazine/28836)を参考に
24
58
  例えば卵焼き上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと卵焼きの各そのリンクに飛ぶ
25
59
  麻婆豆腐上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと麻婆豆腐の各そのリンクに飛ぶ
26
60
  というシステムを作りたかったのですが、どのように実装したらいいか分からず質問させていただきました。
61
+ 追記
62
+ **document.getElementById("main").addEventListener**で卵焼き、麻婆豆腐、唐揚げ上で右クリックするとメニューが出現したため、
63
+ じゃmainの子要素であるcook1クラスを指定すればいいんだと思い**document.getElementById("main").getElementsByClassName('cook1').**を記述したところメニューが出現しなくなりました。どうしてなのでしょうか、mainの子要素であるcook1クラスを指定するという考えが間違えているのでしょうか。
27
64
  https://techacademy.jp/magazine/28836