JavaScript: 2008年3月アーカイブ

iGoogleで使われているアレです。
前回の記事より、さらにわかりやすく書いてみます。
初心者にとっては今回の方がわかりやすいかと思います。

実行サンプルはこちら (別ウィンドウで開きます) 

ソースコード

<html>

<head>
    <title>超シンプルなタブメニュー</title>
<script>

function show1(){
	content1.style.display="block";
	content2.style.display="none";
	content3.style.display="none";
}

function show2(){
	content1.style.display="none";
	content2.style.display="block";
	content3.style.display="none";
}

function show3(){
	content1.style.display="none";
	content2.style.display="none";
	content3.style.display="block";
}
</script>

<style>
#content1 { display:block; }
#content2 { display:none; }
#content3 { display:none; }
</style>

</head>
<body>

<span onclick="show1();">|タブ1|</span>
<span onclick="show2();">|タブ2|</span>
<span onclick="show3();">|タブ3|</span>
<br>

<div id="content1">コンテンツ1</div>   ← タブ1の中身
<div id="content2">コンテンツ2</div>   ← タブ2の中身
<div id="content3">コンテンツ3</div>   ← タブ3の中身

</body>
</html>

解説

ポイントは、
タブの中身をHTMLでこのように書いておき、
<div id="content1">コンテンツ1</div>
<div id="content2">コンテンツ2</div>
Javascriptで中身の表示/非表示を切り替えます。
  content1.style.display="none";   ← タブ1の内容を隠す
  content2.style.display="block";  ← タブ2の内容を表示

プログラムを書いていて、下記のように配列を初期化することがよくあります。

配列 = [
要素1,
要素2,
];

このときいつもモヤモヤするのが、

最後の要素の後にカンマ(,)付けても大丈夫なんだっけ?

ということ。
つまり、この配列は要素が2個としてちゃんと解釈されるのかな?という不安です。


よい機会なので、JavaScript、PHP、Perlで挙動の違いをまとめてみました。

Perlの場合

@ary = ("foo", "bar",);
$count = @ary;
print $count;
→ 結果  2

PHPの場合
$ary = array( "foo", "bar", );
echo count($ary);
→ 結果  2

JavaScript (Firefox) の場合
var ary = ["foo","bar",];
alert(ary.length);
→ 結果 : 2

JavaScript (IE6) の場合
var ary = ["foo","bar",];
alert(ary.length);
→ 結果 : 3

結論。

IEのJavaScriptI(=JScript)は、最後のカンマのあとにもう一つ空の要素を生成する。


というわけで本日のまとめ。


 [FOO,BAR,] を

 3個と数える

 JScript


字あまり ><

foreachを使ってますか?

初級プログラマに意外と知られていないforeach。

何が便利かというと、
カウンタや添え字(index)を意識せずに、配列の要素に対してアクセスし、何らかの処理をすることができます。

foreachを使わない場合、

for(i=0;i<=n;i++){ print 配列名[i]; }
のように、配列の要素数とカウンタを使ったダサイ記述をするハメになります。
一方、foreachを使えば楽ができます。

私はこのforeachが大好きです。
foreachのおかげで、配列が好きになりました。

以下、Perl , PHP, VBA, JavaScriptで、配列の全要素を表示する例です。

Perl  
foreach my $item (@items) { print $item; }
PHP
foreach ( $items as $item){ echo $item; }
JavaScript
for(var i in items){ alert(items[i]);}
VBA  
For Each item In items
  MsgBox item
Next


※注1 Perlの場合は、さらに短く書けます。
foreach (@items){ print $_ ;}  または
for(@items){ print $_;}      または
print for @items; 

※注2 VBAのこのコードは、厳密にはコレクションといって、配列とは別のものです。 しかし実質的には配列のように使えます。

このアーカイブについて

このページには、2008年3月以降に書かれたブログ記事のうちJavaScriptカテゴリに属しているものが含まれています。

前のアーカイブはJavaScript: 2008年2月です。

次のアーカイブはJavaScript: 2008年5月です。