日本語のページ
HTMLのプルダウンソースコード
<form id="form">
<select name="select">
<option value="location.html">日本語</option>
<option value="location-en.html">English</option>
<option value="location-zh.html">中文</option>
</select>
</form>
JavaScriptのソースコードと解説
document.getElementById("form").select.onchange = function() {
location.href = document.getElementById("form").select.value;
}
onchangeは、フォームに入力された内容が変わった際に発生し、function以降の処理が実行されます。プルダウンメニューの場合<option>のvalue属性を調べるために、親要素である<select>のvalueプロパティを読み取る。
location.href = 新しいURL
locationオブジェクトはURLを調べたり、閲覧履歴を管理する機能がある。
selected属性
選択項目にあたるプルダウンやラジオボタン、チェックボックスはselected属性をつけておくと、読み込み後に初めから選択された状態となる。
<option value="index.html" selected>日本語</option>
※selected属性は値のないプール属性の為、下記ソースコードにより、初めからプルダウンメニュー項目が選択された状態にします!!選択項目にあたるプルダウンやラジオボタン、チェックボックスはselected属性をつけておくと、読み込み後に初めから選択された状態となる。
<option value="index.html" selected>日本語</option>
ちなみにプール属性とはselectedやcheckedなどのその属性があれば有効、なければ無効となるものを言う。
var lang = document.querySelector("html").lang;
var opt;
if (lang === "ja") {
opt = document.querySelector('option[value="location.html"]');
} else if (lang === "en") {
opt = document.querySelector('option[value="location-en.html"]');
} else if (lang === "zh") {
opt = document.querySelector('option[value="location-zh.html"]');
}
opt.selected = true;
document.querySelectorメソッド
document.querySelector('CSSセレクター')
JavaScriptで要素を取得するのに、CSSセレクターが使える。ソースコードではoptionタグのうち、value属性が”html”のパラメーターにマッチしています。
※CSSセレクターを使うことで、複数の要素にマッチする可能性がありますが、querySelectorメソッドは「最初にマッチした要素」1つだけを取得する。
location.html「指定した日本語のページ」が開いているときは、変数langに"ja"が保存されている。最初のif文でtrueになり、変数optに<option value="location.html">日本語</option>が代入される。
そして、最後に変数optに代入されている要素にselected属性を追加する。