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

回答編集履歴

1

\[ALL OPEN\], \[ALL CLOSE\] ボタンを追加

2017/05/02 01:11

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,5 +1,64 @@
1
1
  解決済のようですが、関数を書き換えずとも実装できるように思います。
2
2
 
3
- - [aria-hidden属性値をtoggle - JSFiddle](https://jsfiddle.net/Ltjy1uko/)
3
+ - [aria-hidden属性値をtoggle - JSFiddle](https://jsfiddle.net/Ltjy1uko/1/)
4
4
 
5
+ ```HTML
6
+ <style>
7
+ .mask {
8
+ color: black;
9
+ background-color: white;
10
+ cursor: pointer;
11
+ }
12
+
13
+ .mask[aria-hidden="true"] {
14
+ color: black;
15
+ background-color: black;
16
+ }
17
+ </style>
18
+ </head>
19
+ <body>
20
+ <p id="mask-switch">
21
+ <input type="button" id="all-open" value="ALL OPEN">
22
+ <input type="button" id="all-close" value="ALL CLOSE">
23
+ </p>
24
+
25
+ <h3>神経系とは</h3>
26
+ <p>神経系とは、中枢では<span class="mask" aria-hidden="true">脳と脊髄</span>、末梢では<span class="mask" aria-hidden="true">運動</span>神経・<span class="mask" aria-hidden="true">感覚</span>神経・<span class="mask" aria-hidden="true">自律</span>神経という神経組織からなる。</p>
27
+
28
+ <script>
29
+ 'use strict';
30
+ document.querySelectorAll('.mask').forEach(function (element) {
31
+ element.addEventListener('click', function (event) {
32
+ var element = event.target;
33
+
34
+ element.setAttribute('aria-hidden', element.getAttribute('aria-hidden') === 'true' ? 'false' : 'true');
35
+ }, false);
36
+ });
37
+
38
+ document.getElementById('mask-switch').addEventListener('click', function handleClick (event) {
39
+ var input = event.target, ariaHidden;
40
+
41
+ switch (input.id) {
42
+ case 'all-open':
43
+ ariaHidden = 'false';
44
+ break;
45
+ case 'all-close':
46
+ ariaHidden = 'true';
47
+ break;
48
+ }
49
+
50
+ if (ariaHidden) {
51
+ for (var elements = document.querySelectorAll('.mask'), i = 0, len = elements.length; i < len; ++i) {
52
+ console.log(elements[i]);
53
+ elements[i].setAttribute('aria-hidden', ariaHidden);
54
+ }
55
+ }
56
+ }, false);
57
+ </script>
58
+ ```
59
+
60
+ **(2017/0/02 10:11追記)**
61
+
62
+ [ALL OPEN], [ALL CLOSE] ボタンを追加しました。
63
+
5
64
  Re: ceeport さん