前提・実現したいこと
プログラミング初心者です。関数の引数に関数を当てはめて、なおかつ引数でない方の関数に引数の関数を実行するかどうかのif文を書いたのですが、if文に当てはまらなくても引数の関数が実行されてしまいます。
具体的には、以下のソースコードにおいて、「"t=5"ボタンを押すことによりafterclick1関数(変数tの値を5にする)を実行」しなくても「"実行"ボタンを押してafterclick2関数を実行」することで、outside関数の引数であるinside関数が実行されます。(それによって得られるconsole.logの値は"t=5"と"tの値は0"となり、tについては5になっていないようです。)
これを、t=5、すなわちafterclick1が実行されたという条件を満たしていないときには実行されず、条件を満たした時に実行されるようにするにはどのようにすればよろしいでしょうか。
発生している問題・エラーメッセージ
以下のコードでif文を満たさなくてもinside関数が実行されます。
エラーメッセージ
該当のソースコード
html
1 2 3<!DOCTYPE html> 4<html> 5 <head> 6 <input type="button" onclick="afterclick1()" value="t=5" style="font-size:70px; width:286px;height:90px; position: absolute;left:70px; top:70px;" id="next"> 7 <input type="button" onclick="afterclick2()" value="実行" style="font-size:70px; width:286px;height:90px; position: absolute;left:370px; top:70px;" id="next"> 8</head> 9<body> 10 11 <script type="text/javascript" src="fcn.js"></script> 12 13</body> 14 </html> 15
JavaScript
1 2var t=0; 3 4 5//ボタンを押した時に呼び出される関数 6function afterclick1() { 7 t=5; 8} 9function afterclick2() { 10//ここにif文を書くと問題ないようですが、目的とは少し異なります。 11 outside(inside()) 12} 13 14//関数を引数にする関数と引数として扱いたい関数 15//引数にしたい関数 16function inside() { 17 console.log("t=5") 18 console.log("tの値は"+t) 19} 20 21//引数に関数を指定したい関数 22function outside(fc) { 23 if(t==5) fc; 24} 25
試したこと
ソースコードにある通りに目的とは違いますがafterclick2関数にif文を書くことを試したところととりあえずこのコードでの実行はできるようです。
ただ、自分はoutside関数内で条件分岐をしたいと思っています。
また、検索もしましたが、その結果、newを使ったものが見つかりました自分はnewを使わずにコードを書きたいと思っています。
補足情報
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/09 13:27
2021/08/09 13:37
2021/08/09 13:39
2021/08/09 13:41
2021/08/09 13:44
2021/08/09 13:58