忍者ブログ

からすまる日誌

20191216pm03 パスワードの生成(2)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

20191216pm03 パスワードの生成(2)

このinputが空だった時の警告のif文はどう作るか?
牧野先生いわくisNaNがいいらしい。
 
案1
if (passStr ==""){
案2
if (!isNaN(num)){
案3
if (num ==""){
  
isNaN
>isNaN() 関数は引数が NaN (非数)かどうかを判定します。isNaN 関数の型強制は興味深いルールを持つことに注意してください。
 
>JavaScript の数値チェックに isNaN を使うのは「あり」か「なし」か?
 
答えは「なし」です。
 
なぜなら isNaN 関数は「数値であることをチェックする」関数ではなく「数値でないことをチェックする関数」だからです。チェックする引数の値に制約があるなら、isNaN で事足りるかもしれません。それでも、きちんと関数の仕様を理解しておかないとバグの温床となるため注意が必要です。
 
ここが大変興味深いので参照のこと
  
isNaNの理解が難しいのがわかる。
 

ただなんかうまくいかなかったな。
原因は条件文じゃなく値を返す部分にありそう。
if文のなかには入っている。
 
if (passStr ==""){
 console.log('here is in if');
 $('#foo').text('piyo');
 //$('#pass').text('piyo');
 //このid fooだと<p>に出力出来て、id passだと表示できないのはなぜだ?
}
 
それともここ以外の場所でスペルミスがあってうまくないのか?
これ分かった。警告文を書き出したあとに、後の行で上書きが起こっている。
だから何も生成されずに""が出力されてる。
 
 $('#pass').text(passStr);
  
最後の方にこの行があるでしょう。これで上書きされた。
よって、「入力ボックスになにもないときの警告文を#passにだしたいなら、この行のあとに」ということになる。
 
できたできた
 

 
 

チェックボタンが入っているかどうかはプロップを使う。
  
  var c01 = $('#chk1').prop('checked');//チェックボタンの1つめの取得
  
--->自分のコード
  
  var c01 = $('#chk1').prop('checked');//チェックボタンの1つめの取得
  var c02 = $('#chk2').prop('checked');
  var c03 = $('#chk3').prop('checked');
  var c04 = $('#chk4').prop('checked');
  
  if(c01 == true){
   moji += moji1;
  }
  if(c02 == true){
   moji += moji2;
  }
  if(c03 == true){
   moji += moji3;
  }
  if(c04 == true){
   moji += moji4;
  }
  console.log(moji);
 
長いよ。
 
--->先生のコード。これで済む
 
  if( $('#chk1').prop('checked')) moji+=moji1;
  if( $('#chk2').prop('checked')) moji+=moji2;
  if( $('#chk3').prop('checked')) moji+=moji3;
  if( $('#chk4').prop('checked')) moji+=moji4;
 
ここまで
 
--->pass.js
 
$(function(){
 console.log('foo');
 
 var moji1 = "abcde";//testで短め
 var moji2 = "ABCDE";
 var moji3 = "12345";
 var moji4 = "!#$&?";
 $('#btn').on('click',function(){
  var num = $('#num').val();
  
  var passStr ="";//初期化すると同時に、これが文字列であると示す
  var moji="";//連結できるように空文字を入れておく
  //var moji = moji1+moji2+moji3+moji4;
  
  if( $('#chk1').prop('checked')) moji+=moji1;
  if( $('#chk2').prop('checked')) moji+=moji2;
  if( $('#chk3').prop('checked')) moji+=moji3;
  if( $('#chk4').prop('checked')) moji+=moji4;
  console.log(moji);
 
  for (i=0; i<num; i++){//8回回す
   var ran=Math.floor(Math.random()*moji.length);
   passStr += moji.charAt(ran);//何文字目か
  }
 $('#pass').text(passStr);
 
  if (num==""){
   console.log('はいってない');
   $('#pass').text('生成文字数を入力どうぞ!!');
  }
 });
});
PR

コメント

ブログ内検索

カレンダー

03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30