- ベストアンサー
Edgeでの動作不良に対応するための解決策とは?
- 現在公開しているホームページで、Firefoxでは作動するのにEdgeでは作動しない箇所が見つかり対応に苦慮しています。
- 問題点を分かりやすくするために、inputした値をGoボタンでoutputに表示するだけの簡単なサンプルに落とし込んでみました。
- 基本シロウトなので正確なことは分かりませんが、ブラウザ間でreloadの仕様が異なり、Edgeではreloadにより表示画面がリセットされてしまうことが原因のようです。解決策、またreloadを使用しないもっと良い方法などありましたら教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>したがって変数も”べた”の状態で記述する必要があり、 そんなことはないと思います。 変数スコープ(見える範囲)と言うのがありますが、グローバル変数は関数内からも参照可能ですし。 ただしプログラムを書く位置で挙動が変わってきたりするのがJavaScriptのいやらしいところで、私は<head>~</head>内にすべて書いてしまうのが好きなんですが、フォームの下の方に書かないといけない場合もあるようです。 まあ実際のプログラムを見てみないとダメかもしれませんね。 一つの手としては、onclick= に全部書いてしまうと言うのもあります。 <html> <body> <p> <label for="input">input</label> <input type="number" id="input" value="100"> </p> <input type="button" onclick="document.getElementById('output').value = document.getElementById('input').value;" value="Go"> <p> <label for="output">output</label> <input type="number" id="output" value="999"> </p> </body> </html>
その他の回答 (1)
- asciiz
- ベストアンサー率70% (6823/9703)
location.reload() なんてよほど特殊な場面でしか使いません。 通常は、関数を定義し、onclick= で呼び出すと思います。 (例) <html> <head> <script> function valuecopy() { var input= document.getElementById("input").value; var output = document.getElementById("output"); output.value = input; } </script> </head> <body> <p> <label for="input">input</label> <input type="number" id="input" value="100"> </p> <input type="button" onclick="valuecopy();" value="Go"> <p> <label for="output">output</label> <input type="number" id="output"> </p> </body> </html>
お礼
回答いただきありがとうございました。 OKWAVEも初めての利用なので不慣れで申し訳ありません。 「質問者からの補足」としてコメントさせていただきましたが、まだ説明が足りていないようです。 私がお送りしたサンプルでいうと、最初にhtmlを読み込んだ時点でoutputに初期値が表示されていることが要件になると思います。 ホームページを開いた時に”べた”で初期値が与えられカレンダーが表示される必要があります。 もし、お分かりになるようであればご享受願います。
補足
早速の回答ありがとうございます。 そうですか、やはりfunctionによる記述が普通ですよね。 ただ、functionによる記述もいくつか試してみたのですが、うまくいかなかったのでlocation.reload() という特殊なものに辿り着いてしまいました。 この問題の背景をうまく説明できるか分かりませんが、以下に書いてみます。 実は、ホームページにはカレンダーが含まれており、日付を表すadayという変数でカレンダーを表示させています。 ところが、カレンダー部のjs自体がfunction calendar(aday)といった形にできておらず”べた”書きの状態です。 したがって変数も”べた”の状態で記述する必要があり、それが今回切り出した部分(outputがadayに相当)となります。 専門的な表現や用語が分からなかったので”べた”と書きましたが、functionの外のベース部分といった意味合いです。 functionを使わずにうまく変数outputを記述する方法はありませんでしょうか。 ど素人の質問でたいへん分かりづらいと思いますが、よろしくお願い致します。
お礼
ご回答ありがとうございます。 なるほど、jsを使用しないこのようなダイレクトな書き方もできるのですね。 参考になりました。 ただ、「実際のプログラムを見てみないとダメかもしれませんね。」とありますように、私の方から前提となる要件をもう少し正確にお伝えする必要がありそうです。 別のサンプルを作成してみましたので、この質問は一旦締め切ることにして、再質問という形にさせていただきます。 また、回答をいただけるとうれしいです。 ありがとうございました。