回答編集履歴

3

質問者の追記を受けて、内容修正

2018/03/13 09:09

投稿

miyabi_pudding
miyabi_pudding

スコア9528

test CHANGED
@@ -1,4 +1,116 @@
1
+ これは、動かないですね。
2
+
3
+ なぜなら、javascriptで指定しているのは、
4
+
5
+ aタグに対して、スムーススクロールを効かせるイベントをつけているので。
6
+
7
+
8
+
9
+ ですが、質問者さんがやろうとしていることは、radioボタンの変化で、スムーススクロールをきかせたいってことですよね?
10
+
11
+
12
+
13
+ js部分を下記に変えましょう。
14
+
15
+ 既に書いてるスムーススクロールの記述は消してください。
16
+
17
+
18
+
19
+ ```javascript
20
+
21
+ $(function(){
22
+
23
+ // ラジオボタン2段階で表示
24
+
25
+ document.addEventListener('change',function(e){
26
+
27
+ var t=e.target;
28
+
29
+ if(t.name=="move"){
30
+
31
+ Array.prototype.forEach.call(document.querySelectorAll('.second,.third'),function(x){
32
+
33
+ if(x.id==t.value){
34
+
35
+ x.style.display="block";
36
+
37
+ Array.prototype.forEach.call(x.querySelectorAll('[type=radio]'),function(y){
38
+
39
+ y.checked=false;
40
+
41
+ });
42
+
43
+
44
+
45
+ // ここでスムーススクロールを実行
46
+
47
+ var speed = 800; // ミリ秒で記述
48
+
49
+ // アンカーの値取得
50
+
51
+ // 移動先を数値で取得
52
+
53
+ var position = $(x).offset().top;
54
+
55
+ // スムーススクロール
56
+
57
+ $("html, body").animate({scrollTop:position}, speed, "swing");
58
+
59
+ }else{
60
+
61
+ x.style.display="none";
62
+
63
+ }
64
+
65
+ });
66
+
67
+ }
68
+
69
+ if(t.name=="grade"){
70
+
71
+ Array.prototype.forEach.call(document.querySelectorAll('.third'),function(x){
72
+
73
+ x.style.display=(x.id==t.value)?"block":"none";
74
+
75
+ // ここでスムーススクロールを実行
76
+
77
+ if (x.id==t.value) {
78
+
79
+ var speed = 800; // ミリ秒で記述
80
+
81
+ // アンカーの値取得
82
+
83
+ // 移動先を数値で取得
84
+
85
+ var position = $(x).offset().top;
86
+
87
+ // スムーススクロール
88
+
89
+ $("html, body").animate({scrollTop:position}, speed, "swing");
90
+
91
+ }
92
+
93
+
94
+
95
+ });
96
+
97
+ }
98
+
99
+ });
100
+
101
+
102
+
103
+ });
104
+
105
+ ```
106
+
107
+
108
+
109
+
110
+
111
+
112
+
1
- これ普通に動くと思いますが。
113
+ ~~これ普通に動くと思いますが。~~
2
114
 
3
115
 
4
116
 
@@ -10,7 +122,7 @@
10
122
 
11
123
 
12
124
 
13
- 私は、下記のコードで動きました。
125
+ ~~私は、下記のコードで動きました。~~
14
126
 
15
127
 
16
128
 
@@ -104,8 +216,8 @@
104
216
 
105
217
 
106
218
 
107
- もしかして、当該コード6行目に入れています、jQueryを読み込んでいない、とかありませんでしょうか?
219
+ ~~もしかして、当該コード6行目に入れています、jQueryを読み込んでいない、とかありませんでしょうか?
108
220
 
109
221
  このコードは、jQueryを使っているので、
110
222
 
111
- 読み込まなければ、動きません。
223
+ 読み込まなければ、動きません。~~

2

若干、文言や、marginなど修正。

2018/03/13 09:09

投稿

miyabi_pudding
miyabi_pudding

スコア9528

test CHANGED
@@ -36,11 +36,11 @@
36
36
 
37
37
 
38
38
 
39
- <p><a href="#radio_button_1">スクロールさせたい</a></p>
39
+ <p><a href="#radio_button_1">スクロールさせたい</a></p>
40
40
 
41
41
 
42
42
 
43
- <div class="second" id="radio_button_1" style="margin: 1000px;">
43
+ <div class="second" id="radio_button_1" style="margin-top: 1000px;">
44
44
 
45
45
  <div class="radio_button_box">
46
46
 

1

質問の修正を受けて、回答を修正

2018/03/13 07:06

投稿

miyabi_pudding
miyabi_pudding

スコア9528

test CHANGED
@@ -2,8 +2,110 @@
2
2
 
3
3
 
4
4
 
5
- 質問者さんは、やってみたが動かなかった、ってことでよろしいですか?
5
+ ~~質問者さんは、やってみたが動かなかった、ってことでよろしいですか?
6
6
 
7
7
  動かなかったのであれば、
8
8
 
9
- htmlコードの記載も含めないと、答えようがないと思います。
9
+ htmlコードの記載も含めないと、答えようがないと思います。~~
10
+
11
+
12
+
13
+ 私は、下記のコードで動きました。
14
+
15
+
16
+
17
+ ```html
18
+
19
+ <!DOCTYPE html>
20
+
21
+ <html lang="jp">
22
+
23
+ <head>
24
+
25
+ <meta charset="utf-8">
26
+
27
+ <title></title>
28
+
29
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
30
+
31
+
32
+
33
+ </head>
34
+
35
+ <body>
36
+
37
+
38
+
39
+ <p><a href="#radio_button_1">スクロールさせたい</a></p>
40
+
41
+
42
+
43
+ <div class="second" id="radio_button_1" style="margin: 1000px;">
44
+
45
+ <div class="radio_button_box">
46
+
47
+ <label><input type="radio" name="grade" value="e">あああ</label><br />
48
+
49
+ <label><input type="radio" name="grade" value="b-2">いいい</label>
50
+
51
+ </div>
52
+
53
+ </div>
54
+
55
+
56
+
57
+
58
+
59
+ <script>
60
+
61
+ /*ページ内リンクのスムーススクロール*/
62
+
63
+ $(function(){
64
+
65
+ // #で始まるリンクをクリックしたら実行されます
66
+
67
+ $('a[href^="#"]').click(function(){
68
+
69
+ // スクロールの速度
70
+
71
+ var speed = 800; // ミリ秒で記述
72
+
73
+ // アンカーの値取得
74
+
75
+ var href= $(this).attr("href");
76
+
77
+ // 移動先を取得
78
+
79
+ var target = $(href == "#" || href == "" ? 'html' : href);
80
+
81
+ // 移動先を数値で取得
82
+
83
+ var position = target.offset().top;
84
+
85
+ // スムーススクロール
86
+
87
+ $("html, body").animate({scrollTop:position}, speed, "swing");
88
+
89
+ return false;
90
+
91
+ });
92
+
93
+ });
94
+
95
+
96
+
97
+ </script>
98
+
99
+ </body>
100
+
101
+ </html>
102
+
103
+ ```
104
+
105
+
106
+
107
+ もしかして、当該コード6行目に入れています、jQueryを読み込んでいない、とかありませんでしょうか?
108
+
109
+ このコードは、jQueryを使っているので、
110
+
111
+ 読み込まなければ、動きません。