質問編集履歴

2

ソースコードを修正しました。

2017/05/29 10:15

投稿

kozy
kozy

スコア20

test CHANGED
File without changes
test CHANGED
@@ -38,9 +38,11 @@
38
38
 
39
39
  crossorigin="anonymous"></script>
40
40
 
41
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
42
+
41
43
  <style>
42
44
 
43
- #list {
45
+ .target-area {
44
46
 
45
47
  display: none;
46
48
 
@@ -52,78 +54,136 @@
52
54
 
53
55
  <body>
54
56
 
57
+ <body>
58
+
59
+ <div class="wrapper">
60
+
61
+ <div class="search-area">
62
+
55
- <form>
63
+ <form>
56
-
64
+
57
- <input type="text" id="search_text">
65
+ <input type="text" id="search-text" placeholder="検索ワードを入力">
66
+
58
-
67
+ </form>
68
+
69
+ <div class="search-result">
70
+
59
- <button id="btn">クリック</button>
71
+ <div class="search-result__hit-num"></div>
60
-
72
+
61
- <div id="display"></div>
73
+ <div id="search-result__list"></div>
74
+
62
-
75
+ </div>
76
+
77
+ </div>
78
+
79
+
80
+
63
- <ul id="list">
81
+ <ul class="target-area">
64
-
82
+
65
- <li class="address"><a href="https://www.yahoo.co.jp/">ヤフー</a><li>
83
+ <li class="address"><a href="https://www.yahoo.co.jp/">ヤフー</a><li>
66
-
84
+
67
- <li class="address"><a href="https://www.google.co.jp/">グーグル</a><li>
85
+ <li class="address"><a href="https://www.google.co.jp/">グーグル</a><li>
68
-
86
+
69
- <li class="address"><a href="http://www.msn.com/">MSN</a><li>
87
+ <li class="address"><a href="http://www.msn.com/">MSN</a><li>
88
+
70
-
89
+ <li class="address"><a href="https://www.infoseek.co.jp/">インフォシーク</a><li>
90
+
71
- </ul>
91
+ </ul>
92
+
72
-
93
+ </div><!-- /.wrapper -->
94
+
95
+
96
+
73
- </form>
97
+ </body>
74
98
 
75
99
  <script>
76
100
 
77
- window.onload = function(){
78
-
79
- var btn = document.getElementById('btn');
80
-
81
- btn.addEventListener('click', function(){
82
-
83
- var searchResult = [];
84
-
85
- var searchText = document.getElementById('search_text').value;
86
-
87
- //console.log(searchText);
88
-
89
- var address = document.getElementsByClassName('address');
90
-
91
-
92
-
93
- //a要素のhref属性の値と要素の間のテキストをそれぞれ取得
94
-
95
- for(i = 0; i < address.length; i++){
96
-
97
- var address_array = address[i].firstChild.getAttribute('href');
98
-
99
- var potalSite = address[i].firstChild.textContent;
100
-
101
- console.log(potalSite);
102
-
103
- }
104
-
105
-
106
-
107
- // 検索対象となるリストに入力された文字列が存在するかどうかを判定
108
-
109
- if(potalSite.indexOf(searchText) != -1){
110
-
111
- searchResult.push(searchText);
112
-
113
- }
114
-
115
- console.log(searchResult);
116
-
117
-
118
-
119
-
120
-
121
- });
122
-
123
-
101
+ $(function () {
102
+
103
+ searchWord = function(){
104
+
105
+ var searchResult,
106
+
107
+ searchText = $(this).val(), // 検索ボックスに入力された値
108
+
109
+ targetText,
110
+
111
+ targetTextArray = [],
112
+
113
+ targetHref,
114
+
115
+ targetHrefArray = [],
116
+
117
+ hitNum;
118
+
119
+
120
+
121
+ // 検索結果を格納するための配列を用意
122
+
123
+ searchResult = [];
124
+
125
+ // 検索結果エリアの表示を空にする
126
+
127
+ $('#search-result__list').empty();
128
+
129
+ $('.search-result__hit-num').empty();
130
+
131
+
132
+
133
+ // 検索ボックスに値が入ってる場合
134
+
135
+ if (searchText != '') {
136
+
137
+ $('.target-area li a').each(function() {
138
+
139
+ targetText = $(this).text();
140
+
141
+ targetTextArray.push(targetText);
142
+
143
+ targetHref = $(this).attr('href');
144
+
145
+ targetHrefArray.push(targetHref);
146
+
147
+ // 検索対象となるリストに入力された文字列が存在するかどうかを判断
148
+
149
+ if (targetText.indexOf(searchText) != -1) {
150
+
151
+ // 存在する場合はそのリストのテキストを用意した配列に格納
152
+
153
+ searchResult.push(targetText);
154
+
155
+ }
156
+
157
+ });
158
+
159
+
160
+
161
+ // 検索結果をページに出力
162
+
163
+ for (var i = 0; i < searchResult.length; i++) {
164
+
165
+ var univHref = targetHrefArray[targetTextArray.indexOf(searchResult[i])];
166
+
167
+ $('<a>').text(searchResult[i]).appendTo('#search-result__list').attr('href', univHref);
168
+
169
+ }
170
+
171
+ // ヒットの件数をページに出力
172
+
173
+ hitNum = searchResult.length + '件のポータルサイトが見つかりました。';
174
+
175
+ $('.search-result__hit-num').append(hitNum);
176
+
177
+ }
124
178
 
125
179
  };
126
180
 
181
+ // searchWordの実行
182
+
183
+ $('#search-text').on('input', searchWord);
184
+
185
+ });
186
+
127
187
  </script>
128
188
 
129
189
  </body>
@@ -136,6 +196,8 @@
136
196
 
137
197
 
138
198
 
199
+
200
+
139
201
  ```
140
202
 
141
203
 

1

出来たところまでのコードを追記しました。

2017/05/29 10:15

投稿

kozy
kozy

スコア20

test CHANGED
File without changes
test CHANGED
@@ -38,6 +38,16 @@
38
38
 
39
39
  crossorigin="anonymous"></script>
40
40
 
41
+ <style>
42
+
43
+ #list {
44
+
45
+ display: none;
46
+
47
+ }
48
+
49
+ </style>
50
+
41
51
  </head>
42
52
 
43
53
  <body>
@@ -48,15 +58,15 @@
48
58
 
49
59
  <button id="btn">クリック</button>
50
60
 
51
- <a id="display"><a>
61
+ <div id="display"></div>
52
62
 
53
63
  <ul id="list">
54
64
 
55
- <li><a href="https://www.yahoo.co.jp/">ヤフー</a><li>
65
+ <li class="address"><a href="https://www.yahoo.co.jp/">ヤフー</a><li>
56
66
 
57
- <li><a href="https://www.google.co.jp/">グーグル</a><li>
67
+ <li class="address"><a href="https://www.google.co.jp/">グーグル</a><li>
58
68
 
59
- <li><a href="http://www.msn.com/">MSN</a><li>
69
+ <li class="address"><a href="http://www.msn.com/">MSN</a><li>
60
70
 
61
71
  </ul>
62
72
 
@@ -64,17 +74,63 @@
64
74
 
65
75
  <script>
66
76
 
67
- $(function(){
77
+ window.onload = function(){
68
78
 
69
- $('#list').hide();
79
+ var btn = document.getElementById('btn');
70
80
 
81
+ btn.addEventListener('click', function(){
82
+
83
+ var searchResult = [];
84
+
85
+ var searchText = document.getElementById('search_text').value;
86
+
87
+ //console.log(searchText);
88
+
89
+ var address = document.getElementsByClassName('address');
90
+
91
+
92
+
93
+ //a要素のhref属性の値と要素の間のテキストをそれぞれ取得
94
+
95
+ for(i = 0; i < address.length; i++){
96
+
97
+ var address_array = address[i].firstChild.getAttribute('href');
98
+
99
+ var potalSite = address[i].firstChild.textContent;
100
+
101
+ console.log(potalSite);
102
+
103
+ }
104
+
105
+
106
+
107
+ // 検索対象となるリストに入力された文字列が存在するかどうかを判定
108
+
109
+ if(potalSite.indexOf(searchText) != -1){
110
+
111
+ searchResult.push(searchText);
112
+
113
+ }
114
+
115
+ console.log(searchResult);
116
+
117
+
118
+
119
+
120
+
71
- });
121
+ });
122
+
123
+
124
+
125
+ };
72
126
 
73
127
  </script>
74
128
 
75
129
  </body>
76
130
 
77
131
  </html>
132
+
133
+
78
134
 
79
135
 
80
136