DigtalBloomStudio

Javascript(2)

top画像

DOM操作

Id:Class:コードの表示が可能

1 + 1 = ?

1 + 1 = ?

答え
  
  表示: 1 + 1 = ? 
  <p>1 + 1 = ?</p>

  表示: 1 + 1 = 2 
  <p>1 + 1 = <span id="anser">?</span></p>
  <script>
  document.getElementById('anser').textContent = 1 + 1;
  </script>
  

イベント

ボタンをクリックすると、画像が表示:非表示

  
  画像を表示button 
  <button id="btn">画像を表示</button>

  画像を非表示button 
  <button id="btn1">画像を比表示</button>
  <img id="img" src="img/logo.png" alt="答え" style="display:none;">

  画像を表示
  <script>
    document.getElementById('btn').addEventListener('click', function(){
    document.getElementById('img').style.display = 'block';
    });
  </script>

  画像を非表示
  <script>
  document.getElementById('btn1').addEventListener('click', function(){
  document.getElementById('img').style.display = 'none';
  });
  </script>
  

ボタンを押すと音が鳴りサイコロを振って数字変化

サイコロの目は?

サイコロ
   
  サイコロの目は?</span>
  <button id="btn2">サイコロを振る</button>
  <script>
    document.getElementById('btn2').addEventListener('click', function(){
    document.getElementById('dice').textContent = Math.floor(Math.random() * 6) + 1;
    音が鳴る
    const audio = new Audio('../voise/1.wav'); // 音声ファイルを指定
    audio.play();
  });
  </script>
  

precodeの枠の中でクリックすると音が鳴る

連続再生キャンセル用
  
  precodeより下に書かないと反応しない
  <script>
  document.getElementById('precode').addEventListener('click', function(){    // precodeの枠の中でクリックすると音が鳴る
  if (!this.audio1) {                                                       // 連続再生キャンセル用
  this.audio1 = new Audio('../voise/4.wav');                           //音が鳴る 
  this.audio1.addEventListener('ended', function(){                    //音が終わったら
  this.audio1.currentTime = 0;                                         //音を最初に戻す
  this.audio1.isPlaying = false;                                       //音が終わったらfalse
  }.bind(this));                                                       //bind(this)を使うことで、thisを使えるようにする
  }
  if (!this.audio1.isPlaying) {                    //連続再生キャンセル用
  this.audio1.play();                        //音が鳴る
  this.audio1.isPlaying = true;             //音が鳴っている間はtrue
  }
  });
  </script>
  

テキストフィールドからの情報を受け取る

理屈を知るために、小さい計算機もどき作成

数字の掛け算

x = ?

文字列の足し算

+ = ?
  
  掛け算の計算

  <div class="Calculator">
  <p>数字の掛け算</p>
  <input type ="number" id="num1"> x <input type ="number" id="num2"> = <span id="result">?</span>  
  </div>

  文字列の足し算
  <div class="Calculator">
  <p>文字列の足し算</p>
  <input type ="text" id="text1"> + <input type ="text" id="text2"> = <span id="result1">?</span>
  </div>

  ボタン
  <div class="Calculator-div">
  <button id="btn3">計算</button>
  </div>
  
  
  <script>
  // 掛け算の計算
  document.getElementById('btn3').addEventListener('click', function(){        // ボタンをクリックしたら
  const num1 = document.getElementById('num1').value;                       // valueで入力した値を取得
  const num2 = document.getElementById('num2').value;                       // valueで入力した値を取得
  document.getElementById('result').textContent = Math.round(num1 * num2); // Math.round()で四捨五入
  });

  // 文字列の足し算
  document.getElementById('btn3').addEventListener('click', function(){      // ボタンをクリックしたら
  const text1 = document.getElementById('text1').value;                  // valueで入力した値を取得
  const text2 = document.getElementById('text2').value;                // valueで入力した値を取得
  document.getElementById('result1').textContent = text1 + text2;     // 文字列の足し算
  });
  </script>
  

テキストフィールドに入力がない場合に警告する+音が出る

名前の入力の例で確認


else画像
  
  名前の入力の例で確認

  <div class="Calculator">
  <p>名前の入力の例で確認</p>
  <input type ="text" id="num3" placeholder="名前を入力してください">
  <button id="btn4">名前を表示</button>
  </div>
  
  
  <script>
  document.getElementById('btn4').addEventListener('click', function(){               // ボタンをクリックしたら
  const num3 = document.getElementById('num3').value;                               // valueで入力した値を取得
  if (num3 === '') {                                          // 入力がない場合
  const audio = new Audio('../voise/2.wav');                 // 音声ファイルを指定
  audio.playbackRate = 1.5;                                // 再生速度を2倍にする
  audio.play();                                            // 音が鳴る                                                
  alert('貴方は誰ですか?');                                // 警告
  } else {                                                              // 入力がある場合
  const audio1 = new Audio('../voise/4.wav');                 // 音声ファイルを指定                              
  audio1.play();                                                     // 音が鳴る
  alert('おかえりなさいませ' + num3 + 'ご主人様');                     // 名前を表示
  }
  });
  </script>
  

論理演算子::[true=正][false=誤]

記号 説明
A === B 等しい
A < B Aが大きい
A > B Bが大き
A >= B AがB以上、B含む
A<= B AがB以下、A含む
A !== B 等しくない
&& かつ(左:右:両方等しい時)
|| または(左:右:どちらか等しい時)
=> アロー関数

数字の入力(10以下の数字は警告される)条件を加えた


数字を表示(10以下の数字は警告される)
  
  数字の入力(空文字or10以下の数字は警告される)条件を加えた
  <div class="Calculator">
  <p>数字の入力(10以下の数字は警告される)条件を加えた</p>
  <input type ="text" id="num5" placeholder="数字入力してください">
  <button id="btn5">数字を表示(10以下の数字は警告される)</button>
  </div>
  
  
  <script>
  document.getElementById('btn5').addEventListener('click', function(){    // ボタンをクリックしたら
    const num5 = document.getElementById('num5').value;                   // valueで入力した値を取得
    if (num5 === '' || num5 <= 10) {                                          // 入力がない場合                                            
    alert('10以上の数字を加えてください');                           // 警告
    } else {                                                         // 入力がある場合                                       
    alert('貴方の幸福度は' + num5 + '位です');                      // 表示
    }
    });
    </script>
  

数字を連続で表示(for文)

  
  <script>
  for (let i = 1; i <= 10; i++) {        for(初期化処理; 条件式; 更新処理) 
  document.write(i + '回目<br>');     繰り返し処理
  }
  </script>
  

数字を連続で表示(while文)

繰り返す回数がわかってる場合便利

  
  <script>
  let i = 1;                              let i = 1;  初期化処理
  while (i <= 15) {                        while(条件式) 
  document.write(i + '回目<br>');         繰り返し処理
  i++;                                                更新処理
  }
  </script>
  

応用でサイコロが20出るまで続く

ページのリロードで変化

  
  <script>
  let a = 0;
  while (a !== 20) {                        while(条件式) 
  a = Math.floor(Math.random() * 20);          繰り返し処理
  document.write(a + '回目<br>');
  a++;                                              更新処理
  }
  </script>
  

do while文

  
  <script>
  let c = 0;
  do {
  c = Math.floor(Math.random() * 10) ;
  document.write('サイコロ振った回数は' + c + '個目<br>');
  c++;
  } while (c !== 10);
  </script>
  

break文(強制終了)

  
  <script>
  for (let d = 0; d < 100; d++) {                                  // 100回繰り返す        
  d = Math.floor(Math.random() * 100)+1 ;                         // 100までの数字
  document.write('サイコロ振った回数は' + d + '個目<br>');
  if (d === 1) {                                              // 1になったら
  break;                                                    // 終了
  }
  }
  </script>
  

continue文(スキップ)

continue条件になった時の条件を無視して最初に戻る

  
  <script>
  for (let e = 0; e < 10; e++) {                                  // 10回繰り返す
  e = Math.floor(Math.random() * 10)+1 ;                         // 10までの数字
  if (e === 5) {                                              // 5になったら
  continue;                                                // スキップ
  }
  document.write('サイコロ振った回数は' + e + '個目<br>');
  }
  </script>
  

配列でまとめる

配列いろんなやり方があるが、for Each文、お勧め

指定して表示[01234]

  
  <script>
                      0          1       2          3       4
    const fruits = ['りんご', 'バナナ', 'みかん', 'ぶどう', 'いちご'];
    document.write(fruits[0] + '<br>');    // りんご
  </script>
  

まとめて表示

  
  <script>
                    0          1       2          3       4
  const fruits1 = ['りんご', 'バナナ', 'みかん', 'ぶどう', 'いちご'];
  for (let f = 0; f < fruits1.length; f++) {    // fruits1の数だけ繰り返す
  document.write(fruits1[f] + '<br>');
  }
  </script>
  

for of文

for (変数 of 配列) 繰り返したい処理

  
  <script>
                    0          1       2          3       4
  const fruits2 = ['りんご', 'バナナ', 'みかん', 'ぶどう', 'いちご'];           
  for (let g of fruits2) {                                            // fruits2の数だけ繰り返す
  document.write(g + '<br>');                                 // fruits2の中身を表示
  }                                                         
  </script>
  for (変数 of 配列) 繰り返したい処理
  

for Each文=お勧め

配列.forEach(関数名)

  
  <script>
                    0          1       2          3       4
  const fruits3 = ['りんご', 'バナナ', 'みかん', 'ぶどう', 'いちご'];           
  fruits3.forEach(function(g) {                                       // fruits3の数だけ繰り返す
  document.write(g + '<br>');                                 // fruits3の中身を表示
  });
  </script>
  配列.forEach(関数名)
  

連想配列

連想配列の中身を指定して表示[りんご]

  
  <script>
  const fruits55 = {
  'apple': 'りんご',
  'banana': 'バナナ',
  'orange': 'みかん',
  'grape': 'ぶどう',
  'strawberry': 'いちご'
  };

  for (let z in fruits55) {
  document.write(fruits55[z] + '<br>');                 // fruits55の中身を表示
  }
  document.write(fruits55['apple'] + '<br>');             // りんご
  </script>
   

中身全て表示

  
  <script>
  const fruits555 = {
  'apple': 'りんご',
  'banana': 'バナナ',
  'orange': 'みかん',
  'grape': 'ぶどう',
  'strawberry': 'いちご'
  };

  for (let q in fruits555) {
  document.write(fruits55[q] + '<br>');                 // fruits55の中身を表示
  }
  </script>
  

key取得して表示

  
  <script>
  const fruits5555 = {
  'apple': 'りんご',          // key: value  'apple'
  'banana': 'バナナ',         // key: value  'banana
  'orange': 'みかん',        // key: value   'orange'
  'grape': 'ぶどう',          // key: value  'grape'
  'strawberry': 'いちご'      // key: value  'strawberry'
  };

  for (key in fruits5555) {
  document.write(key + '<br>');                 
  }
  </script>
  

配列の変更

末尾に追加(.push)

  
  <script>
  const itemitem =['月', '火', '水', '木', '金', '土', '日'];
  // 内容の追加
  itemitem.push('月面');                                          // 末尾に追加
  document.write(itemitem + '<br>');   
  </script>
  

先頭に追加(.unshift)

  
  <script>
  const itemitem1 =['月','火', '水', '木', '金', '土', '日'];
  // 内容の追加
  itemitem1.unshift('太陽');                                          // 先頭に追加
  document.write(itemitem1 + '<br>');
  </script>
  

指定した箇所を変更(月[0])

  
  <script>
  const itemitem2 =['月','火', '水', '木', '金', '土', '日'];
  // 内容の変更
  itemitem2[0] = '';                           // 0番目を変更                        
  document.write(itemitem2 + '<br>');          // 月が消える
  </script>
  

内容の最初削除(shift)

  
  <script>
  const itemitem3 =['月','火', '水', '木', '金', '土', '日'];
  // 内容の変更
  itemitem3.shift();                           // 最初を削除                        
  document.write(itemitem3 + '<br>');          // 月が消える
  </script>
  

内容の最後削除(pop)

  
  <script>
  const itemitem4 =['月','火', '水', '木', '金', '土', '日'];
  // 内容の変更
  itemitem4.pop();                           // 最後を削除                        
  document.write(itemitem4 + '<br>');          // 日が消える
  </script>
  

指定した箇所を削除(.splice)(月[0])

  
  <script>
                    0     1     2     3    4    5     6
  const itemitem5 =['月','火', '水', '木', '金', '土', '日'];

  // 内容の変更
  itemitem5.splice(0, 1);                           // 0番目を削除       
  // 6番目削除する場合は、itemitem5.splice(6, 1);    
  document.write(itemitem5 + '<br>');          // 月が消える
  </script>
  

コンソールログ

画面に、結果を表示していたは、確認が大変な時があるので、コンソール画面で確認[F12]

console.log('表示したい内容')

コードだけ記載確認しながら実践してみてくれ

  
  <script>
  console.clear();    // コンソールログを消す
  console.log('私は天才だ');     // コンソールログ表示
  console.error('エラーです');    // エラー表示
  console.warn('警告です');      // 警告表示       
  console.time('タイマー');      // タイマー開始
  console.timeEnd('タイマー');    // タイマー終了 
  </script>
  

多次元配列=複雑あまり使わないかもね

  
  <script>
  const area = {
  'hokkaido': ['札幌'],
  'aomori': ['青森', '弘前'],
  }
  for (let key in area) {
  document.write(key + '<br>');
  for (let value of area[key]) {
  document.write(value + '<br>');
  }
  }
  </script>
  

querySelector

querySelectorは、HTMLの要素を取得

querySelectorAllは、HTMLの要素を全て取得

querySelector('要素名')で取得

querySelectorAll('要素名')で全て取得

querySelector('#id名')で取得

querySelectorAll('.class名')で全て取得

1 + 1 =?

  
  <p>1 + 1 =<span class="spsp">?</span></p>
  
  
  <script>
  document.querySelector('.spsp').textContent = 1 + 1;     // 1 + 1 = 2
  </script>
  

Formから情報を取得

  
  <label for="pref">住まい</label>
    <select id="pref" name="pref">     // プルダウンの情報取得
      <option value="北海道">北海道</option>
      <option value="青森">青森</option>
      <option value="岩手">岩手</option>
    </select>
  <label>ご意見箱</label>
  <textarea id="opinion" name="opinion"></textarea>
  <div>
    <button class="butoon1" id="btn6">送信</button>
  </div>
  
  
  <script>
  document.getElementById('btn6').addEventListener('click', function() {
  const pref = document.getElementById('pref').value;                         // プルダウンの情報取得
  const opinion = document.getElementById('opinion').value;                   // テキストエリアの情報取得
  alert('住まいは' + pref + 'です。' + 'ご意見は' + opinion + 'です。');
  });
  </script>
  

チェックボックスの情報取得

好きな果物を1つ選択:

      
        <h2>好きな果物を1つ選択:</h2>
        <label for="apple">りんご</label>
        <input type="checkbox" id="apple" name="apple" value="りんご">              
        <label for="banana">バナナ</label>
        <input type="checkbox" id="banana" name="banana" value="バナナ">
        <label for="orange">みかん</label>
        <input type="checkbox" id="orange" name="orange" value="みかん">
        <div>
          <button id="btn7">送信</button>
        </div>
      
    
  
  <script>
    document.getElementById('btn7').addEventListener('click', function() {
    const apple = document.getElementById('apple').checked;                 // チェックボックスの情報取得
    const banana = document.getElementById('banana').checked;               // チェックボックスの情報取得
    const orange = document.getElementById('orange').checked;               // チェックボックスの情報取得
    // 一つだけ選択可能
    if (apple === true && banana === false && orange === false) {            // りんごだけ選択
    alert('好きな果物は' + 'りんご' + 'です。');
    } else if (apple === false && banana === true && orange === false) {     // バナナだけ選択
    alert('好きな果物は' + 'バナナ' + 'です。');
    } else if (apple === false && banana === false && orange === true) {      // みかんだけ選択
    alert('好きな果物は' + 'みかん' + 'です。');
    } else {
    alert('好きな果物は一つだけ選択してください。');
    }
    });
  </script>
  

ラジオボタンの情報取得

  
  <label>好きな車を1つ選択:</label>
  <label for="toyota">トヨタ</label>
  <input type="radio"  name="car" value="トヨタ" >
  <label for="nissan">日産</label>
  <input type="radio"  name="car" value="日産">
  <label for="honda">ホンダ</label>
  <input type="radio"  name="car" value="ホンダ">
  <label for="honda">回答なし</label>
  <input type="radio"  name="car" value="回答なし" checked>
  <div>
  <button id="btn8">送信</button>
  </div>
  
  
  <script>
  document.getElementById('btn8').addEventListener('click', function() {
  const car = document.querySelector('input[name="car"]:checked').value;    // ラジオボタンの情報取得
  console.log('好きな車は' + car + 'です。');
  });
  </script>
  

パスワード自動生成

作成したいパスワード数入力





  
  <label>パスワード</label>
  <input type="text" id="password" name="password">
  <div>
    <button class="butoon1" id="btn9">生成</button>
  </div>
  
  
  <script>
  document.getElementById('btn9').addEventListener('click', function() {
  let pass = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';      // パスワードの元となる数字を配列で準備   
  let length =Number(window.prompt('何文字のパスワード作成しますか?'))                   // パスワードの文字数を指定する
  let password = '';                                                                 // パスワードの初期化
  for (let i = 0; i < length; i++) {                                                // パスワードの文字数繰り返す
  password += pass[Math.floor(Math.random() * pass.length)];                      // 乱数を使用して配列の中から適当な1文字選択
  }
  document.getElementById('password').value = password;                            // 画面に表示する
  });
  </script>
  
Top