• ベストアンサー

javascript 初心者です

javascript 初心者です 設定したグローバル変数を引数に指定したいのですが、うまくいきません。 下記のスクリプトのように書いてみたのですが、○が返ってきてしまいます。 どうすればうまくいくでしょうか?よろしくお願いします。 <html> <head> <script type="text/javascript"> <!-- i = false; function myFunc(hensu){ if(hensu){ alert("○"); } else{ alert("×"); } } --> </script> </head> <body> <p onclick="myFunc('i')">[btn]</p> </body> </html>

質問者が選んだベストアンサー

  • ベストアンサー
  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.2

回答#1の方が回答されている通り、 <p onclick="myFunc('i')">[btn]</p> で関数myFunc()の引数に変数iではなく、文字列'i'を渡しているからです。 ダブルクォーテーションやシングルクォーテーションで囲ったものは文字列になります。 正しくは、 <p onclick="myFunc(i)">[btn]</p> と書きます。 なお、 <p onclick="myFunc('i')">[btn]</p> のように関数myFunc()の引数に文字列を渡した場合、関数myFunc()内のif(hensu)は「変数hensuが定義されている(何らかの値を持っている)か」を判定してしまい、この場合、変数hensuは文字列'i'という値を持っているためtrueを返してしまいます。

shiraito
質問者

お礼

ご丁寧な回答有り難うございます。 プログラミングに慣れていないので、 その辺りのことでつまずくことが多いみたいです。 とても参考になります。助かりました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

変数 i じゃなくて、文字列 'i' を渡しているからです。 var i=false; alert("i"); alert(i);

shiraito
質問者

お礼

なるほど。簡単なことだったんですね。 大変助かりました。ありがとうございます。

関連するQ&A