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

回答編集履歴

2

\+/-を切り替えたい場合

2016/11/04 03:45

投稿

MakeNowJust
MakeNowJust

スコア545

answer CHANGED
@@ -34,4 +34,29 @@
34
34
 
35
35
  参考: [parseInt() - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/parseInt)
36
36
 
37
- `innerHTML`は要素の内側にあるHTMLを文字列で格納しています。逆に代入することでHTMLの内容を書き変えることができます。
37
+ `innerHTML`は要素の内側にあるHTMLを文字列で格納しています。逆に代入することでHTMLの内容を書き変えることができます。
38
+
39
+ 追記:
40
+
41
+ コメントで`+`/`-`を切り替えられるようにしたいとのことなので、その場合`keisan.js`は、
42
+
43
+ ```JavaScript
44
+ // <head>タグに<script>タグを書いた場合そのタイミングではまだHTMLタグに対応するオブジェクトができていないので、
45
+ // ページの読み込みが完了するまで待つ
46
+ window.addEventListener('load', function () {
47
+ var id1 = document.getElementById('1'); // <input id="1">を取得
48
+ var id2 = document.getElementById('2'); // <input id="2">を取得
49
+ var houhou = document.getElementById('houhou'); // <select id="houhou">を取得
50
+ var keisan = document.getElementById('keisan'); // <button id="keisan">を取得
51
+ var kekka = document.getElementById('kekka'); // <span id="kekka">を取得
52
+
53
+ // <button id="keisan">がクリックされたときの動作を指定
54
+ keisan.addEventListener('click', function () {
55
+ var val1 = parseInt(id1.value, 10); // <input id="1">に入力された文字列を数値として取得
56
+ var val2 = parseInt(id2.value, 10); // <input id="2">に入力された文字列を数値として取得
57
+ kekka.innerHTML = houhou.value === '+' ? val1 + val2 : val1 - val2; // 二つの値を計算した結果を、<span id="kekka">に表示
58
+ });
59
+ });
60
+ ```
61
+
62
+ となります。

1

全体的に例を修正

2016/11/04 03:45

投稿

MakeNowJust
MakeNowJust

スコア545

answer CHANGED
@@ -1,40 +1,37 @@
1
- まず、HTMLの中にJavaScriptを読み込むための`<script>`タグを追加ます
1
+ `keisan.js`の中身はこんな感じでょうか
2
2
 
3
- ```HTML
4
- <!DOCTYPE html>
5
- <html lang="ja">
6
- <head>
7
- <meta charset="utf8">
8
- <title>計算</title>
9
- <script src="keisan.js"></script>
10
- </head>
11
- <body>
12
- <p>
13
- <input id="1" type="text" size="4"></input>
14
- +
15
- <input id="2" type="text" size="4"></input>
16
- <button id="keisan">計算</button><br>
17
- 計算結果:<span id="kekka"></span>
18
- </p>
19
- <script src="keisan.js"></script> <!-- ここにscriptタグを追加 -->
20
- </body>
21
- </html>
22
- ```
23
-
24
- そして、`keisan.js`という名前でJavaScriptを書いていきます。
25
-
26
3
  ```JavaScript
4
+ // <head>タグに<script>タグを書いた場合そのタイミングではまだHTMLタグに対応するオブジェクトができていないので、
5
+ // ページの読み込みが完了するまで待つ
6
+ window.addEventListener('load', function () {
27
- var id1 = document.getElementById('1'); // <input id="1">を取得
7
+ var id1 = document.getElementById('1'); // <input id="1">を取得
28
- var id2 = document.getElementById('2'); // <input id="2">を取得
8
+ var id2 = document.getElementById('2'); // <input id="2">を取得
29
- var keisan = document.getElementById('keisan'); // <button id="keisan">を取得
9
+ var keisan = document.getElementById('keisan'); // <button id="keisan">を取得
30
- var kekka = document.getElementById('kekka'); // <span id="kekka">を取得
10
+ var kekka = document.getElementById('kekka'); // <span id="kekka">を取得
31
11
 
32
- // <button id="keisan">がクリックされたときの動作を指定
12
+ // <button id="keisan">がクリックされたときの動作を指定
33
- keisan.addEventListener('click', function () {
13
+ keisan.addEventListener('click', function () {
34
- var val1 = parseInt(id1.value, 10); // <input id="1">に入力された文字列を数値として取得
14
+ var val1 = parseInt(id1.value, 10); // <input id="1">に入力された文字列を数値として取得
35
- var val2 = parseInt(id2.value, 10); // <input id="2">に入力された文字列を数値として取得
15
+ var val2 = parseInt(id2.value, 10); // <input id="2">に入力された文字列を数値として取得
36
- kekka.innerHTML = val1 + val2; // 二つの値を足した結果を、<span id="kekka">に表示
16
+ kekka.innerHTML = val1 + val2; // 二つの値を足した結果を、<span id="kekka">に表示
17
+ });
37
18
  });
38
19
  ```
39
20
 
40
- 詳し説明はコードにある通りなので、分からなことがあったら教えください。
21
+ この中で使ってる関数やメソッドにいて説明してきます
22
+
23
+ `document.getElementById`は、HTML中で指定した`id`属性の値から、その要素に対応するJavaScriptのオブジェクトを取得する関数です。
24
+
25
+ 参考: [document.getElementById - Web API インターフェイス | MDN](https://developer.mozilla.org/ja/docs/Web/API/Document/getElementById)
26
+
27
+ `addEventListener`はそうして取得したオブジェクトにあるメソッドで、要素に対してあるイベントが発生したときの動作を指定することができます。第一引数にイベント名を、第二引数にその際に実行する動作となる関数を指定します。
28
+
29
+ 参考: [EventTarget.addEventListener - Web API インターフェイス | MDN](https://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener)
30
+
31
+ `id1.value`や`id2.value`は、要素に入力された値を表す文字列が格納されています。
32
+
33
+ `parseInt`は引数として渡された文字列を数値に変換します。第二引数は基数を表します。
34
+
35
+ 参考: [parseInt() - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/parseInt)
36
+
37
+ `innerHTML`は要素の内側にあるHTMLを文字列で格納しています。逆に代入することでHTMLの内容を書き変えることができます。