プロが教える店舗&オフィスのセキュリティ対策術

javascriptの学習で
var yourName=window.prompt("入力欄にお名前をお書きください。","ここに入力してください。")として、
そのままのときは〜〜という文、空のときやキャンセルボタンを押されたときは〜〜という文と指定して、
名前を入力してもらったときには
else{document.write("<p>ようこそ"+yourName+"さん!</p>")としたのですが、
これで名前を入力すると
ようこそfalseさん!と表示されてしまいます(>_<)
なぜでしょうか??
わかるかた教えてください!

質問者からの補足コメント

  • そうですよね(>_<)
    情報不足ですみませんでした(>_<)

    お願いします!
    </head>

    <body>

    <script type=text/javascript>

    var yourName=window.prompt(入力欄にお名前をお書きください。,ここに入力してください。);

    if(yourName==ここに入力してください。){
    document.write(<p>お名前の入力をお忘れになったようですね。</p>);
    }else if(yourName= || yourName==null){
    document.write(<p>お名前を入力していただきたかったです。</p>);
    }else{
    document.write("<p>ようこそ"+yourName+"さん!</p>");
    }

    </script>

    </body>
    </html>

      補足日時:2015/05/06 14:40
  • "がなぜか抜けてしまって文字オーバーになってしまうので一部しか書き足せませんでした(>_<)

      補足日時:2015/05/06 14:43

A 回答 (2件)

すみませんが


> そのままのときは〜〜という文、空のときやキャンセルボタンを押されたときは〜〜という文と指定して、
> 名前を入力してもらったときには
という風に「自分が書いたと思っている処理内容」だけを書かれても、回答者にはあなたが実際にどう書いたかわからず適切な回答をすることができません。

あなたが実際に書いたコードをコピー&ペーストで補足願います。
    • good
    • 0

> "がなぜか抜けてしまって


というのがどう抜けたのかが分からないので少々自信がありませんが、
> }else if(yourName= || yourName==null){

 }else if(yourName="" || yourName==null){
だとすると、こちら(Windows 7 + IE 11)で同一の現象を確認しました。

原因は == とすべきところを = としてしまったことです。
この結果、if 文の中の
 yourName="" || yourName==null
は、あなたが想定したであろう「yourName が "" か null のいずれかか」の論理式の結果ではなく、「"" と 『yourName が null か』との論理和を yourName に代入する」の結果になります。
javaScript では "" も論理式では false とみなされますので、論理和の性質を考えるとこの式は「『yourName が null か』を yourName に代入する」という事になります。
したがって、問題の if 文は yourName に「yourName が null か」を代入し、その値によってその後の文の実行の是非を判断します。

参考 URL - いずれも MDN
演算子の優先順位
https://developer.mozilla.org/ja/docs/Web/JavaSc …
論理演算子
https://developer.mozilla.org/ja/docs/Web/JavaSc …
    • good
    • 0
この回答へのお礼

hitomura様

大変わかりやすい回答ありがとうございます!!
実際にyourName==""||yourName==nullと、してみたところしっかり入力した名前が表示されるようになりました!!

とてもすっきりしました!
参考URLもためになります!
ありがとうございます☆彡

お礼日時:2015/05/07 07:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!