人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

地図を表示させて、更にセレクトメニューで地域を選択してマーカーを表示させています。http://withmama.lolipop.jp/kaihatsu/spreadsheet_to_map/hatena4.php
chromeだと、意図した通りの処理ができるのですが、IEだと動きません。
http://withmama.lolipop.jp/kaihatsu/spreadsheet_to_map/hatena4.php のソースを見てただく早いのですが、コードの下の方で、
<input type="hidden" name="ne_lat" id="ne_lat" value="">
<input type="hidden" name="ne_lng" id="ne_lng" value="">
<input type="hidden" name="sw_lat" id="sw_lat" value="">
<input type="hidden" name="sw_lng" id="sw_lng" value="">
としているのですが、この値がIEだと渡せてないようです。
当方の環境はwindowsXPのため、IE8を使用してます。

IEでも動作するコードをご教示いただけませんか?

●質問者: ozaki
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Cherenkov
●100ポイント
<select onchange="setHidden(this);">

に変更。

function setHidden(item) {
 item = $(item).val(); //★
 var ne_lat = $('#ne_lat');
 var ne_lng = $('#ne_lng');
 var sw_lat = $('#sw_lat');
 var sw_lng = $('#sw_lng');

 if(item == '北海道') {
 ne_lat.val('45.3328');
 ne_lng.val('145.7775');
 sw_lat.val('41.2107');
 sw_lng.val('139.2004');
 } else if(item == '東北') {
 ne_lat.val('41.3322');
 ne_lng.val('142.0421');
 sw_lat.val('36.4729');
 sw_lng.val('139.3113');
 } else if(item == '関東') {
 ne_lat.val('37.0918');
 ne_lng.val('140.5221');
 sw_lat.val('34.5358');
 sw_lng.val('138.5457');
 } else if(item == '東京都&神奈川県') {
 ne_lat.val('35.7977');
 ne_lng.val('139.9469');
 sw_lat.val('35.0744');
 sw_lng.val('138.5457');
 } else {
 ne_lat.val('');
 ne_lng.val('');
 sw_lat.val('');
 sw_lng.val('');
 }
}

(回答2に対して)こうすればvalue属性を追加しなくてもよさそう。

参考:IE8以下はvalue属性がないoption要素の値をJavaScriptのvalueプロパティで取得できない | 富永日記帳


Cherenkovさんのコメント
あー、うーん。勘違いかも。

Cherenkovさんのコメント
せっかくphp使ってるんだから、onchangeでパラメータを動的に変更せずに、地域名をそのまま投げてサーバサイドで出力するとか。 せっかくjavascript使ってるんだから、いちいちpostせずに、onchangeで動的に地図を書き換えるとか。

Cherenkovさんのコメント
IEだとgetElementByIdがid属性だけじゃなくてname属性もたしかひっぱってくるからそれが原因かも。

Cherenkovさんのコメント
onchange="setHidden(this.value)の値が渡ってない(調査中)

Cherenkovさんのコメント
[http://w0s.jp/diary/184:title=IE8以下はvalue属性がないoption要素の値をJavaScriptのvalueプロパティで取得できない | 富永日記帳] これだ。

a-kuma3さんのコメント
あ、コメントがついてた <tt>orz</tt>

Cherenkovさんのコメント
地図増やす度にne_lat.val('45.3328');とか関数内を編集するのは面倒くさいから >|html| <option value='"{"name":"北海道","ne_lat":45.3328,"ne_lng":145.7775,"sw_lat":41.2107,"sw_lng":139.2004}"'>北海道</option> ||< とかJSON埋め込んでまとめて管理するとか。

ozakiさんのコメント
こういう方法もあるんですね。感謝です!

2 ● a-kuma3
●100ポイント ベストアンサー

以下のくだりなんですが、option タグに value 属性がありません。

<select onchange="setHidden(this.value);">
<option>地域を選んでください</option>
<option>北海道</option>
<option>東北</option>

<option>関東</option>
<option>東京都&神奈川県</option>
<option>その他地域は製作中</option>
</select>

以下のように、value 属性を指定すれば、動作すると思います。

<select onchange="setHidden(this.value);">
<option>地域を選んでください</option>
<option value="北海道">北海道</option>
<option value="東北">東北</option>

<option value="関東">関東</option>
<option value="東京都&神奈川県">東京都&神奈川県</option>
<option>その他地域は製作中</option>
</select>

ozakiさんのコメント
ありがとうございました。一発で表示されました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ