質問: setTimeout(function(){ alert("change"); #setTimeoutがうまく動いているかを試すためのテスト price(); #ここでprice関数を実行したい }, 1000); }); #画面表示時にprice関数を起動するためのコード(3) $(document).ready(function(){ squareMeter(); }); ``` 1は、金額を計算しタグに表示するための関数です。ここは問題無いと思います。 2は、inputで個数が変更された時に、price関数を起動するための記述です。 個数は、に入力してもらうため、1個ずつ増やしていくたびにいちいちprice関数が起動することなく、変更し終えて1秒後にようやくprice関数が起動するための工夫をしています。 3は、inputのデフォルト値が1なので、表示時に、1×100を計算して表示するための記述です。 問題は、3をコメントアウトすれば2も問題なく動くのですが、3があると2が動きません。 試しに、3がある状態でinputの数値を変えると、alert("change")までは動きます。 そのため、3があると、price関数を呼び出すことができないのだと思います。 なお、2があっても、3は問題なく起動します。 原因が掴めず、困っています。 お分かりの方、ご教示頂ければ幸いです。 よろしくお願いいたします。
回答: `price = ammount * 100;`の部分で関数名に仕様している`price`に値を入れてしまっているのが原因だと思います。(なので3をコメントアウトした状態でも2回目以降は動作しないと思います。) `var price = ammount * 100;`または別の変数名に変えて見て下さい。