あにねこ電脳覚書 - サポート掲示板


[記事リスト] [返信する] [新着記事] [過去ログ] [ワード検索] [留意事項] [管理用]

記事No 659
タイトル Re^9: 中心十字アイコンの追加
投稿日 : 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') を表します。
以上、こちらではテストしていないので違ってるかも知れませんが(その可能性大)、
お試しください。

- 関連一覧ツリー (▼ をクリックするとツリーを一括表示します)


- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)
おなまえ
Eメール
タイトル
メッセージ(迷惑な宣伝・広告記事の投稿は禁止します)
参照先
画像UP
暗証キー (英数字で8文字以内)
投稿キー (右画像の数字を入力) 投稿キー


- 投稿記事修正/削除フォーム -
処理 No 暗証キー

- WebForum -