テキストの入れ替え?

[統計] HTMLからXHTMLへの移行を進めていますか?



0   名前: BNFOR : 2007/06/30(土) 15:28  ID:dcX3jFJP sub-t1
語彙が少なくて・・・ごめんなさい。


ページを表示する度に、テキストが変わる・・・的なことがしたいんですが、調べても見付かりませんでした。
例えば、「アイーン」と書かれていたのが、次に表示した時は「だめだこりゃ」とか「ちょっとだけよ」とかにランダムに変わってる、みたいな。


こんなこと、できますでしょうか。教えてください。よろしくおねがいします。

1   名前: 匿名 : 2007/06/30(土) 15:28  ID:kqesmFoG sub-gm

色々と方法はあると思いますがJavaScriptを利用するのが一般的だと思います。
表示する度に、テキストが変わる とありますが以下のような具合ですか? 新規ページにコピーして試してみてください。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="content-script-type" content="text/javascript" />
<title>ランダムにメッセージを表示しよう!!</title>
<script type="text/javascript" language="javascript">
<!--
//<![CDATA[

function RND_MSG() //メッセージをランダムに表示するサブルーチン
{
//オブジェクトの名前を設定します
var id = 'box1';

//メッセージを設定する(配列で設定しています。好きな数だけ増やせます。)
msg = new Array();
msg[0] = "アイーン";
msg[1] = "だめだこりゃ";
msg[2] = "ちょっとだけよ";
var kazu = 3; //←設定したメッセージの数をここで設定しておきます。(この場合3個なので3とする)

//ランダムでメッセージを選択します。(小数点以下切捨てで)
var choice = Math.floor(Math.random()*kazu);

//表示します(より多くのブラウザに対応するために以下のようにします。)
if(document.all)
{
document.all(id).innerHTML = msg[choice];
}
else if(document.getElementById)
{
document.getElementById(id).innerHTML = msg[choice];
}
}
//]]>
//-->
</script>
</head>
<body onload="RND_MSG();">
<div id="box1"><!--ここにランダムのメッセージを表示します--></div>
</body>
</html>

※動作確認:IE7

2   名前: 匿名 : 2007/06/30(土) 15:28  ID:K.4sEtYQ sub-Cz
>>1
XHTML の script 要素内をコメントアウトしないで下さい。どうしてもコメントアウトが必要なら HTML 4.01 で書いて下さい。

> 設定したメッセージの数をここで設定しておきます

msg.length を見れば十分です。なるべく手作業を増やさないのがプログラミングのコツです。

> より多くのブラウザに対応するために以下のようにします。

それならば、IE4 対応(document.all)よりも NN4 対応(document.layers)の方が切実だったりします。個人的に、どちらも必要ないと思います。

# innerHTML はオススメしませんが、今回の件では Safari がテキストノードデータの書き換えに問題を抱えているのでナイスチョイスだと思います。

3   名前: BNFOR : 2007/06/30(土) 15:28  ID:dcX3jFJP sub-t1
すげぇ・・・!

ありがとうございました!

一覧へ戻る