回答編集履歴

3

箇条書きがそもそもしすぎてたので修正

2017/11/10 01:42

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -2,27 +2,27 @@
2
2
 
3
3
 
4
4
 
5
- - そもそもjQueryの`$(fn)`自体が`window.onload = fn`の完全上位互換みたいなものです。
5
+ - jQueryの`$(fn)`自体が`window.onload = fn`の完全上位互換みたいなもの
6
6
 
7
- `window.onload = fn`は後勝ちで上書きされ、前の関数が動作しなくなる害悪設定です。二度と使う事はないので忘れましょ
7
+ `window.onload = fn`は後勝ちで上書きされ、前の関数が動作しなくなる害悪設定です。二度と使う事はないので忘れ
8
8
 
9
- - 単なる関数は[ホイスト(巻き上げ)](https://qiita.com/tomcky/items/988fc5f56d019e9dc097)に気をつけましょ
9
+ - 単なる関数は[ホイスト(巻き上げ)](https://qiita.com/tomcky/items/988fc5f56d019e9dc097)に気をつけ
10
10
 
11
- おすすめは普通に変数宣言してそれに突っ込む方法です。
11
+ おすすめは普通に変数宣言してそれに突っ込む方法
12
12
 
13
- - fixは外だしします、内部で宣言されている変数は全てfix外で管理し、fixは値を書き換えるの集中しましょう。
13
+ - fixは外に出そう。
14
14
 
15
- - ところ`fixBox`ってなんですか?未定義でエラーが出そうです。
15
+ 内部宣言されている変数は全てfix外で管理し、fixは値を書き換えるのに集中
16
16
 
17
- - `fixBoxL`も未定義です。`fix`で値が変わるのは`BoxL`でBoxLを一生懸命更新しも何も変わりませんよ。
17
+ - `fixBox``fixBoxL`が未定義だね。fix関数中身だから頭にfix付けみただけ?
18
18
 
19
- - `$(window).on('resize', fn)`の第二引数に無名関数を作って渡していますが、thisを使わない設計なのでそのままfixを渡してしまったほうが簡潔です。
19
+ - `$(window).on('resize', fn)`の第二引数に無名関数を作って渡してるけど、thisを使わない設計なのでそのままfixを渡してしまったほうが簡潔
20
20
 
21
- - jQueryオブジェクトは慣習的に変数名の頭に$を付ける人が多いです
21
+ - jQueryオブジェクトは慣習的に変数名の頭に$を付ける人が多い
22
22
 
23
- - オブジェクトのケツカンマはChromeでは動きますが、IEでは動作しなかったような…まぁ優先度低ですね
23
+ - オブジェクトのケツカンマはChromeでは動くけど、IEでは動作しなかったような…まぁ優先度低
24
24
 
25
- - そもそもオフセット値を書き換えたら画面更新しないと駄目でしょ
25
+ - オフセット値を書き換えたら画面更新しないと駄目でしょ
26
26
 
27
27
 
28
28
 
@@ -32,7 +32,7 @@
32
32
 
33
33
  上記を踏まえてコードをリファクタリングしました。
34
34
 
35
- ※`fixBox`、`fixBoxL`は$BoxとBoxLなんだろうなと解釈したので変数名を変えました
35
+ ※`fixBox`、`fixBoxL`は$BoxとBoxLなんだろうなと解釈したので変数名を変え
36
36
 
37
37
 
38
38
 

2

関数の動作修正

2017/11/10 01:42

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -21,6 +21,8 @@
21
21
  - jQueryオブジェクトは慣習的に変数名の頭に$を付ける人が多いです
22
22
 
23
23
  - オブジェクトのケツカンマはChromeでは動きますが、IEでは動作しなかったような…まぁ優先度低ですね
24
+
25
+ - そもそもオフセット値を書き換えたら画面更新しないと駄目でしょ。
24
26
 
25
27
 
26
28
 
@@ -52,13 +54,7 @@
52
54
 
53
55
  }
54
56
 
55
-
56
-
57
- fix();
58
-
59
- $(window).on('resize', fix);
60
-
61
- $(window).on('scroll', function() {
57
+ var render = function() {
62
58
 
63
59
  if ($(window).scrollTop() < offset.top - 20) {
64
60
 
@@ -86,7 +82,23 @@
86
82
 
87
83
  }
88
84
 
85
+ }
86
+
87
+ var refresh = function() {
88
+
89
- });
89
+ fix();
90
+
91
+ render();
92
+
93
+ }
94
+
95
+
96
+
97
+ refresh();
98
+
99
+ $(window).on('resize', refresh);
100
+
101
+ $(window).on('scroll', render);
90
102
 
91
103
  });
92
104
 

1

文章校正

2017/11/10 01:39

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
 
4
4
 
5
- - そもそもjQueryの`$(fn)`自体が`window.onload = fn`の完全上位互換みたいなので書き方がおかしいで
5
+ - そもそもjQueryの`$(fn)`自体が`window.onload = fn`の完全上位互換みたいなのです。
6
+
7
+ `window.onload = fn`は後勝ちで上書きされ、前の関数が動作しなくなる害悪設定です。二度と使う事はないので忘れましょう。
6
8
 
7
9
  - 単なる関数は[ホイスト(巻き上げ)](https://qiita.com/tomcky/items/988fc5f56d019e9dc097)に気をつけましょう
8
10
 
@@ -12,9 +14,7 @@
12
14
 
13
15
  - ところで`fixBox`ってなんですか?未定義でエラーが出そうです。
14
16
 
15
- - `fixBoxL`も未定義ですが、これは`BoxL`と同ですか?
17
+ - `fixBoxL`も未定義です。`fix`で値変わるのは`BoxL`なのでBoxLを生懸命更新しても何も変わりませんよ。
16
-
17
- (多分コードの外側で定義してあるjQueryオブジェクトなんだろうと思いますが)
18
18
 
19
19
  - `$(window).on('resize', fn)`の第二引数に無名関数を作って渡していますが、thisを使わない設計なのでそのままfixを渡してしまったほうが簡潔です。
20
20
 
@@ -30,9 +30,7 @@
30
30
 
31
31
  上記を踏まえてコードをリファクタリングしました。
32
32
 
33
- ※`fixBox`、`fixBoxL`はそのままなのでこのコードはエラーが出て動作ません
33
+ ※`fixBox`、`fixBoxL`は$BoxとBoxLんだろうなと解釈したので変数名を変えま
34
-
35
- 修正して試してみてください。
36
34
 
37
35
 
38
36
 
@@ -64,7 +62,7 @@
64
62
 
65
63
  if ($(window).scrollTop() < offset.top - 20) {
66
64
 
67
- fixBox.css({
65
+ $Box.css({
68
66
 
69
67
  position: 'absolute',
70
68
 
@@ -76,13 +74,13 @@
76
74
 
77
75
  } else {
78
76
 
79
- fixBox.css({
77
+ $Box.css({
80
78
 
81
79
  position: 'fixed',
82
80
 
83
81
  top: '20px',
84
82
 
85
- left: fixBoxL,
83
+ left: BoxL,
86
84
 
87
85
  });
88
86