質問編集履歴

2

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

2021/12/23 04:43

投稿

martini777
martini777

スコア2

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,21 @@
1
+ ##実装したいこと
2
+
3
+ [サイト](https://techacademy.jp/magazine/28836)を参考に
4
+
5
+ 例えば卵焼き上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと卵焼きの各そのリンクに飛ぶ
6
+
7
+ 麻婆豆腐上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと麻婆豆腐の各そのリンクに飛ぶ
8
+
9
+ というシステムを作りたかったので、悩んでいる部分が解決できれば麻婆豆腐・唐揚げとコピペで半ば強制的に実装することは可能だと思うのですが、どのようにすればいいでしょうか。
10
+
11
+ ##悩んでいる部分
12
+
13
+ **document.getElementById("main").addEventListener**で卵焼き、麻婆豆腐、唐揚げ上で右クリックするとメニューが出現したため、
14
+
15
+ じゃmainの子要素であるcook1クラスを指定すればいいんだと思い**document.getElementById("main").getElementsByClassName('cook1').**を記述したところメニューが出現しなくなりました。どうしてなのでしょうか、mainの子要素であるcook1クラスを指定するという考えが間違えているのでしょうか。
16
+
17
+ ##コード
18
+
1
19
  ```html
2
20
 
3
21
  <!DOCTYPE html>
@@ -109,19 +127,3 @@
109
127
  </html>
110
128
 
111
129
  ```
112
-
113
- [サイト](https://techacademy.jp/magazine/28836)を参考に
114
-
115
- 例えば卵焼き上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと卵焼きの各そのリンクに飛ぶ
116
-
117
- 麻婆豆腐上で右クリックしたらオリジナルのメニューが出て、wikipediaとcookpadを選べ、どちらかを選ぶと麻婆豆腐の各そのリンクに飛ぶ
118
-
119
- というシステムを作りたかったのですが、どのように実装したらいいか分からず質問させていただきました。
120
-
121
- 追記
122
-
123
- **document.getElementById("main").addEventListener**で卵焼き、麻婆豆腐、唐揚げ上で右クリックするとメニューが出現したため、
124
-
125
- じゃmainの子要素であるcook1クラスを指定すればいいんだと思い**document.getElementById("main").getElementsByClassName('cook1').**を記述したところメニューが出現しなくなりました。どうしてなのでしょうか、mainの子要素であるcook1クラスを指定するという考えが間違えているのでしょうか。
126
-
127
- https://techacademy.jp/magazine/28836

1

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

2021/12/23 04:43

投稿

martini777
martini777

スコア2

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