あにねこ電脳覚書 - サポート掲示板
トップに戻る
新規投稿
新着
検索
過去ログ
留意事項
管理
件名: Re^9: 中心十字アイコンの追加
記事No
:
659
投稿日
: 2014/10/30(Thu) 23:38:07
投稿者
:
あにねこ
参照先
:
マーシーさん、こんばんは。
> 3) document.getElementById('ccross').onchange = function() {
> var obj = new OpenLayers.Control.CenterCross({crosslength: 32, bold: 1});
> if (document.getElementById('ccross').checked) {
> map.addControl(obj); //十字線を表示
> } else {
> map.removeControl(obj); //十字線を消去
> }
> } //とした場合は、
ここで定義した無名の関数は、チェックボタンを on/off するたびに
(onchange = 状態が変化するたびに)呼び出されます。
呼び出しと次の呼び出しの間では、変数 obj が保持されている必要があります。
関数の中で var obj とすると、その変数(ローカル変数)の寿命は関数が実行されている間だけです。
なので、次のようにする必要があると思います。
var obj = new OpenLayers.Control.CenterCross({crosslength: 32, bold: 1});
document.getElementById('ccross').onchange = function() {
if (this.checked) {
map.addControl(obj); //十字線を表示
} else {
map.removeControl(obj); //十字線を消去
}
}
なお、this はこの関数の中では、document.getElementById('ccross') を表します。
以上、こちらではテストしていないので違ってるかも知れませんが(その可能性大)、
お試しください。
関連スレッド
▼
-
Google地図の追加
-
マーシー
14/10/25-08:06
No.642
Re: Google地図の追加
-
あにねこ
14/10/25-22:43
No.644
Re^2: Google地図の追加
-
マーシー
14/10/26-07:18
No.646
Re^2: 中心十字アイコンの追加
-
マーシー
14/10/27-15:41
No.648
Re^3: 中心十字アイコンの追加
-
あにねこ
14/10/27-18:44
No.649
Re^4: 中心十字アイコンの追加
-
マーシー
14/10/28-08:09
No.650
Re^4: 中心十字アイコンの追加
-
マーシー
14/10/28-22:31
No.651
Re^5: 中心十字アイコンの追加
-
あにねこ
14/10/28-22:49
No.652
Re^6: 中心十字アイコンの追加
-
あにねこ
14/10/28-22:52
No.653
Re^6: 中心十字アイコンの追加
-
マーシー
14/10/29-09:37
No.654
Re^7: 中心十字アイコンの追加
-
あにねこ
14/10/30-01:13
No.656
Re^8: 中心十字アイコンの追加
-
ヤマトタケル
14/10/30-08:37
No.657
Re^8: 中心十字アイコンの追加
-
マーシー
14/10/30-09:12
No.658
Re^9: 中心十字アイコンの追加
-
あにねこ
14/10/30-23:38
No.659
Re^10: 中心十字アイコンの追加
-
マーシー
14/10/31-09:30
No.660
Re^11: 中心十字アイコンの追加
-
あにねこ
14/10/31-19:58
No.661
Re^12: 中心十字アイコンの追加
-
マーシー
14/10/31-21:00
No.662
返信フォーム
おなまえ
eメール
表示
非表示
タイトル
メッセージ
> マーシーさん、こんばんは。 > > > 3) document.getElementById('ccross').onchange = function() { > > var obj = new OpenLayers.Control.CenterCross({crosslength: 32, bold: 1}); > > if (document.getElementById('ccross').checked) { > > map.addControl(obj); //十字線を表示 > > } else { > > map.removeControl(obj); //十字線を消去 > > } > > } //とした場合は、 > > ここで定義した無名の関数は、チェックボタンを on/off するたびに > (onchange = 状態が変化するたびに)呼び出されます。 > 呼び出しと次の呼び出しの間では、変数 obj が保持されている必要があります。 > 関数の中で var obj とすると、その変数(ローカル変数)の寿命は関数が実行されている間だけです。 > なので、次のようにする必要があると思います。 > > var obj = new OpenLayers.Control.CenterCross({crosslength: 32, bold: 1}); > document.getElementById('ccross').onchange = function() { > if (this.checked) { > map.addControl(obj); //十字線を表示 > } else { > map.removeControl(obj); //十字線を消去 > } > } > > なお、this はこの関数の中では、document.getElementById('ccross') を表します。 > 以上、こちらではテストしていないので違ってるかも知れませんが(その可能性大)、 > お試しください。
参照先
画像UP
暗証キー
(英数字で8文字以内)
投稿キー
(右画像の数字を入力)
-
WebForum
-