JavaScriptをマスターしたいなら『パーフェクトJavaScript』

HTML5 APIもそろそろ仕様が定まりつつあり、来年あたりはHTML5 APIを利用したアプリがどんどんでてきそうですね。

HTML5 APIを利用するにはJavaScriptからコントロールするのが基本となっていて、JavaScriptがわからないと扱うのが難しいかもしれません。

そこでお勧めするのが『パーフェクトJavaScript』です。とにかく内容が濃いです。JavaScriptの言語仕様からjQueryやHTML5 API、Node.jsまで、ここまでまとめられたJavaScript本は、今のところこの本以外ないです。濃すぎてJavaScript未経験者には少し敷居が高いかもしれません。ですがJavaScriptというものを、一からしっかりマスターしたいと思っている方には、この本は手元に置いておいて損はない一品です。

もしJavaScriptをまったく触ったことのない方は、一度この本の内容を見てから入門書選びをしたほうが失敗も少なくなるのではと思います。

アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。

jQuery – チェックボックスがチェックされたらスタイルを変更する

なんか久々にjQueryを触りました…。

セレクタ(属性フィルタ)に変数の値を利用する場合の記述を試したんですが、1.3.1はセレクタまわりが変更になっているからなのか、IE6,7、FirefoxでOKだったのですが、safariが動作せず。

で、ちょこっと調べてみると jQuery 1.3系からはsafari2は対応してないと。そういうことですか…。

jQuery: » jQuery 1.3.1 Released

ブラウザーのシュアの問題で対応をはずしてるみたいですね。しかし下記ページを見てsafari3.xが6%近いシェアがあるってのでびっくり。safariってそんなにも使ってる人いるんですかね?

Browser market share

まあ一応safari2.xもOKなように1.2.6を使っておきました。

作ったものはというと、チェックボックスにチェックをした時に文字のスタイルを変更するというもの。

jQuery – checkされたら文字を装飾する

ソースは以下。

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<title>jQuery - checkされたら文字を装飾する</title>
<script type="text/javascript" src="../jquery-1.2.6.min.js"></script>
<script language="JavaScript">
$(function(){
	//リロード対応用
	//checked=tureのものすべて取得
	$("#chkform :checked").each(function(){
		//checkboxのidを取得
		var isl = $(this).attr("id");
		//labelに対しスタイル追加
		$("label[for="+isl+"]").css({"font-weight":"bold","color":"red"});
	});
	//checkboxがクリックされたら…
	$("#chkform :checkbox").click(function() {
		//checkboxのidを取得
		var isl = $(this).attr("id");
		if($(this).attr('checked') == true) {
			//checked=tureであればスタイル追加
			$("label[for="+isl+"]").css({"font-weight":"bold","color":"red"});
		} else {
			//checked=tureでなければスタイルを空に
			$("label[for="+isl+"]").css({"font-weight":"","color":""});
		}
	});
});
</script>
</head>
<body>
<h1>jQuery - checkされたら文字を装飾する</h1>
<p>好きな動物は?(複数選択可)</p>
<form id="chkform">
<table>
<tr>
<td><input type="checkbox" name="chk&#91;&#93;" value="1" id="chk1"></td>
<td><label for="chk1">犬</label></td>
</tr>
<tr>
<td><input type="checkbox" name="chk&#91;&#93;" value="2" id="chk2"></td>
<td><label for="chk2">猫</label></td>
</tr>
<tr>
<td><input type="checkbox" name="chk&#91;&#93;" value="3" id="chk3"></td>
<td><label for="chk3">鳥</label></td>
</tr>
<tr>
<td><input type="checkbox" name="chk&#91;&#93;" value="4" id="chk4"></td>
<td><label for="chk4">パンダ</label></td>
</tr>
<tr>
<td><input type="checkbox" name="chk&#91;&#93;" value="5" id="chk5"></td>
<td><label for="chk5">トラ</label></td>
</tr>
<tr>
<td><input type="checkbox" name="chk&#91;&#93;" value="6" id="chk6"></td>
<td><label for="chk6">ライオン</label></td>
</tr>
</table>
</form>
</body>
</html>

チェックされたcheckboxのidを取得し、割り当てられたlabelに対してスタイルを追加しています。スタイルシートをつけるとソースが長くなるので、あえて「.css」を使っています。

セレクタ(属性フィルタ)に対して変数を割り当てる方法がわかっていなかったのですが、変数以外を「”」で囲む「$(“[属性=”+変数+”]”)」でいけるようです(なんか無理矢理な感じがするけど…)。

フォームのradio、checkboxは選択してもわかりにくいことが多いので、少し手を加えてやるだけでわかりやすくなると思います。

CSS3も「:checked」はありますが、実用には最短3年ぐらい(IE6,7が少なくなる)と考えると、jQueryとかで補っていった方がいいですね。

しかしずいぶんjQuery触ってないので、また練習がてらなにか作らねば。

参考ページ
jQueryのセレクタ 属性フィルタ1 – [JavaScript]All About

Google MAP API 導入メモ

いまさらながらGoogle MAP API 導入簡易メモ。

1. 下記ページでMaps API キーを手に入れる。
Sign Up for the Google Maps API – Google Maps API – Google Code

2. 座標指定だけでなく住所検索でも利用できる下記サンプルのソースを利用。
Google マップ

3. サンプルのソースの<script src=”http://maps.google.co.jp/maps?file=api&…>の部分のスクリプトの読み込み部分のkeyの値を1で取得した値に変更。

4. ソース少しだけ変更したものがこれ↓です。
Google Map サンプル

Javascript部分だけ抜粋

	var map = null;
	var geocoder = null;
	var address = "大阪高島屋";
	var infoMsg = "<b>"+address+"</b><br />外観が古くひそかにいい建物です。";
	function loadMap() {
		if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GOverviewMapControl());
		map.addControl(new GMapTypeControl());
		//座標を利用する場合はこちらを利用する。geocoder以下はコメントアウトしましょう。
		//map.setCenter(new GLatLng(135.5010216, 34.6646465), 17);
		geocoder = new GClientGeocoder();
		geocoder.getLatLng(
				address,
				function(point) {
					if (!point) {
						alert(address +"が見つかりません。");
					} else {
						map.clearOverlays();
						map.setCenter(point, 17);
						var marker = new GMarker(point);
						map.addOverlay(marker);
						marker.openInfoWindowHtml(infoMsg);
					}
				}
			);
		}
	}
	window.onload = loadMap;
	window.unload=GUnload;

上記サンプルでは「高島屋大阪店」でマップを取得しています。
「address」に住所等を入れ、「infoMsg」に地図上に表示させたいメッセージを記入します。
とりあへずは最低限はこと足りるかと思います。全ソースが気になる方は直接のぞいてください。

参考URL
Google Maps API の例 – Google Maps API – Google Code
逆引きGoogle Maps APIリファレンス
みんなの知識【ちょっと便利帳】 緯度・経度を調べる(GoogleMapsAPI・地図作成用,10進数)