1日1日違ったメッセージ。

[新着] Webテンプレートを仮オープンしました



0   名前: kazuki : 2006/09/23(土) 00:01  ID:PD8o4E0U
1日1日で違ったメッセージを流したいと思っています。

『例1』
1日・・・今日は○○○のLiveが☆☆☆であります。
『例2』
23日・・・今日は○○○のFreeLiveが☆☆☆であります。

といった感じで流したいと思っています。
流すというのはそのままで、スクロールさせたいんです。
マーキーみたいな感じです。

宜しくお願いします。

1   名前: 牛若 : 2006/09/23(土) 00:01  ID:G1hqY0ZB
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>untitled</title>
</head>
<body>
<script type="text/javascript">
function dailyMarquee(){
var 【A-1】 = new Array();
thisday = new Date();
today = thisday.【A-2】;
msg[0]="1日です"
msg[1]="2日です"
msg[2]="3日です"
msg[3]="4日です"
msg[15]="きょうです!"
msg[28]="29日です "
msg[29]="30日です"
msg[30]="31日です"

if (!document.all){【A-3】}
else{
document.write('<marquee scrollAmount="6" style="width:400">'+(msg[【A-4】])+'</marquee>')
}
}
window.onload=【A-5】
</script>
</body>
</html>

--------------------------------------

(答え)20×4=100点
【A-1】=______________
【A-2】=______________
【A-3】=______________
【A-4】=______________
【A-5】=______________

2   名前: NullPo : 2006/09/23(土) 00:01  ID:1Bb3RL38
【A-3】がわからない。orz

3   名前: kazuki : 2006/09/23(土) 00:01  ID:PD8o4E0U
全部・・・わからない。orz

4   名前: m035 ◆Wpzr1YKOiq : 2006/09/23(土) 00:01  [URL]  ID:OdMuVJsu
すべて憶測ですが、
【A-1】=適切な配列名
【A-2】=Dateから何日かを取得するメソッド
【A-3】=ブラウザがIE以外の時の処理
【A-4】=曜日を表す変数(すでに取得済み)
【A-5】=load時に実行する関数
と言う内容かと。
あとは自力で出来ると思います。

#余談
【A-3】はただ文字を例えばp要素に入れて書き出すなどいろいろ考えられます・・・・・・。
それとdocuemnt.write()から考えてdailyMarquee()はonload前に呼び出す仕様ですね。

5   名前: m035 ◆Wpzr1YKOiq : 2006/09/23(土) 00:01  [URL]  ID:OdMuVJsu
誤:【A-4】=曜日を表す変数(すでに取得済み)
正:【A-4】=何日かを表す変数(すでに取得済み)

6   名前: m035 ◆Wpzr1YKOiq : 2006/09/23(土) 00:01  [URL]  ID:OdMuVJsu
>>0
マルチ。
http://www.usagi-js.com/bbs/jsforum.cgi?no=8645&reno=no&oya=8645&mode=msgview&page=0


このサイトの
http://www.tagindex.com/bbs/note.html
を読みましたか?
それと、多少の努力もせずにこのスレッドを放置するのですか?

7   名前: kazuki : 2006/09/23(土) 00:01  ID:PD8o4E0U
放置してるのではなく調べてました。
いきなり放置と言われましても・・・意味が分かりませんが。
多数の場所で質問する行為がいけなかったのですか?

8   名前: NullPo : 2006/09/23(土) 00:01  ID:1Bb3RL38
A-3は・・・リターンでも記述しようか。
ぶっちゃけ、他のブラウザでmarqueeのように実行できるスクリプトを書くなら、きっとIEでも動くんじゃないか、と。

>それとdocuemnt.write()から考えてdailyMarquee()はonload前に呼び出す仕様ですね。
いや、bodyの内容に関しては特に指定がないから、onloadイベントで実行しても仕様は満たすんじゃないかな。
A-5がその関数呼び出しのための一文だと思っていたので、onload前に実行すると、A-5に何を書けばいいのか私にはわからない。



放置に100セピア。

9   名前: NullPo : 2006/09/23(土) 00:01  ID:1Bb3RL38
>>7
調べてたのか。大変失礼いたしました。
>>8の後半はシカトしてください。(´Д⊂

>多数の場所で質問する行為がいけなかったのですか?
いけないわけじゃないんですけど、明記しなければいけないのです。
詳しくは以下を。
http://www.tagindex.com/bbs/note.html#h203

10   名前: kazuki : 2006/09/23(土) 00:01  ID:PD8o4E0U
>>8
すみません。マルチに関してはよく読んでなかった自分がいけなかったと反省です。

11   名前: kazuki : 2006/09/23(土) 00:01  ID:PD8o4E0U
>>8 ではなく >>9でした、すみません。

12   名前: NullPo : 2006/09/23(土) 00:01  ID:1Bb3RL38
じゃあ・・・まぁなんというか、こんなんで。
残念なことにマーキーが解釈されないブラウザを持ってなかったので未テスト。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<script type="text/javascript">
<!--

window.onload = function()
{
  var msg = new Array();
  var marq = document.getElementById("marquee");

  for(var ix = 1; ix <= 31; ix++)
    msg[ix] = ix + "日目です。";

  marq.replaceChild(document.createTextNode(msg[(new Date()).getDate()]), marq.firstChild);

  setMarquee(marq, 1);
}

function setMarquee(element, speed)
{
 //エレメント取得。
  if( typeof(element) == "string" || element instanceof String )
    var marq = document.getElementById(element);
   else
    var marq = element;

 //領域外非表示、折り返しなし。
  marq.style.overflow = "hidden";
  marq.style.whiteSpace = "nowrap";

 //内側のエレメントを全て収納する。
  var filterInline = document.createElement("span");

  while( marq.hasChildNodes() )
    filterInline.appendChild(marq.firstChild);

  marq.appendChild(filterInline);

 //最小値、最大値測定。
  var minLeft = marq.offsetLeft - filterInline.offsetWidth;
  var maxLeft = marq.offsetLeft + marq.offsetWidth;

 //内部の位置指定を相対に変更。
  filterInline.style.position = "relative";

 //初期位置を設定。
  if( speed < 0 )
    var positionLeft = minLeft;
   else
    var positionLeft = maxLeft;

  moveElement();

 //移動関数
  function moveElement()
  {
    positionLeft -= speed;

    if( positionLeft < minLeft )
      positionLeft = maxLeft;

    if( positionLeft > maxLeft )
      positionLeft = minLeft;

    filterInline.style.left = positionLeft + "px";

    setTimeout(moveElement, 10);
  }
}

// -->
</script>
<title>non-title</title>
</head>
<body>

<div id="marquee" style="width:300px;">デフォルトで表示する文字列。</div>

</body>
</html>


13   名前: kazuki : 2006/09/23(土) 00:01  ID:PD8o4E0U
昨日から色々調べてみましたが・・・JavaScriptの知識は全くもってゼロなので
合ってるか自信は全くありません・・・orz

【A-1】= msg
【A-2】= getDate()
【A-3】=
【A-4】= (new Date()).getDate()
【A-5】= dailyMarquee

という感じになりました・・・【A-3】はよくわかりませんでした。

14   名前: kazuki : 2006/09/23(土) 00:01  ID:PD8o4E0U
結局・・・わからなかった・・・orz

15   名前: NullPo : 2006/09/23(土) 00:01  ID:Z0FHbpib
>>12
あぁ、ここ間違えてたな。訂正。
 //最小値、最大値測定。
  var minLeft = 0 - filterInline.offsetWidth;
  var maxLeft = marq.offsetWidth;



>>14
A-4は適当じゃないと思いますが、>>13の内容で動作すると思います。
A-3は何も書かなくてもエラーは出ないと思います。

16   名前: 匿名 : 2006/09/23(土) 00:01  ID:PD8o4E0U
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title></title>
</head>
<body>
<script type="text/javascript">
<!--
function dailyMarquee(){
var msg = new Array();
thisday = new Date();
today = thisday.getDate();

msg[1] = "<B>1日</B>のメッセージ"
msg[2] = "<B>2日</B>のメッセージ"
msg[3] = "<B>3日</B>のメッセージ"
msg[4] = "<B>4日</B>のメッセージ"
msg[5] = "<B>5日</B>のメッセージ"
msg[6] = "<B>6日</B>のメッセージ"
msg[7] = "<B>7日</B>のメッセージ"
msg[8] = "<B>8日</B>のメッセージ"
msg[9] = "<B>9日</B>のメッセージ"
msg[10] = "<B>10日</B>のメッセージ"
msg[11] = "<B>11日</B>のメッセージ"
msg[12] = "<B>12日</B>のメッセージ"
msg[13] = "<B>13日</B>のメッセージ"
msg[14] = "<B>14日</B>のメッセージ"
msg[15] = "<B>15日</B>のメッセージ"
msg[16] = "<B>16日</B>のメッセージ"
msg[17] = "<B>17日</B>のメッセージ"
msg[18] = "<B>18日</B>のメッセージ"
msg[19] = "<B>19日</B>のメッセージ"
msg[20] = "<B>20日</B>のメッセージ"
msg[21] = "<B>21日</B>のメッセージ"
msg[22] = "<B>22日</B>のメッセージ"
msg[23] = "<B>23日</B>のメッセージ" 
msg[24] = "<B>24日</B>のメッセージ"
msg[25] = "<B>25日</B>のメッセージ"
msg[26] = "<B>26日</B>のメッセージ"
msg[27] = "<B>27日</B>のメッセージ"
msg[28] = "<B>28日</B>のメッセージ"
msg[29] = "<B>29日</B>のメッセージ"
msg[30] = "<B>30日</B>のメッセージ"
msg[30] = "<B>31日</B>のメッセージ"

if (!document.all){}
else{
document.write('<marquee scrollAmount="6" style="width:400">'+(msg[(new Date()).getDate()])+'</marquee>')
}
}
window.onload= dailyMarquee();
// -->
</script>
</body>
</html>


という風に実行してみたところIEとOperaでは問題ありませんでしたが・・・
FireFoxとNetscapeでは表示されませんでした・・・orz
FireFoxとNetscapeで表示させるようにするには

if (!document.all){}


の部分を入れないとダメなんでしょうか?

17   名前: NullPo : 2006/09/23(土) 00:01  ID:Z0FHbpib
>>16
>if (!document.all){}
>の部分を入れないとダメなんでしょうか?
その通りですよ。
でも、ねすけはどうか知りませんが、Firefoxはマーキーも解釈するみたいですね。
で、>>12はその件のA-3の回答のつもりなのです。

なんというか、自力でA-1〜A-5まで回答を出せたのなら、>>1にこだわらなくても自前のプログラムを作れそうです。

言い忘れていましたが、マルチ投稿した場合はそれなりの対応をすべきで、削除すべきではないようですね。

18   名前: kazuki : 2006/09/23(土) 00:01  ID:PD8o4E0U
if (!document.all){}

が埋まらない・・・orz
管理のし易さからからして>>1でやっていきたい・・・

19   名前: 牛若 : 2006/09/23(土) 00:01  ID:8dI6LIcS
>>18
お疲れさまです。
私の模範解答だと、
if (!document.all){return;}

です。

20   名前: kazuki : 2006/09/23(土) 00:01  ID:PD8o4E0U
コメントありがとうございます。
なんかスッキリしましたww

FireFoxとNNで動かすことはできないんですか?

21   名前: 牛若 : 2006/09/23(土) 00:01  ID:MytS9JGt
それは通常のJavaScriptを使います。
このサイトのチュートリアルにもある
http://www.tagindex.com/javascript/message/scroll1.html
です。これに上でやった日付関数と配列を組み込みます。こんな感じ
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title></title>
<script type="text/javascript">
var msg = new Array();
var thisday = new Date();
var today = thisday.getDate();
msg[1]="1日です"
msg[2]="2日です"
msg[3]="3日です"
msg[4]="4日です"
//ずっと続くので省略
msg[20]="20日です"
msg[21]="22日です"
msg[22]="きょうメッセージです。見えますか?            "
msg[23]="23日です "
//ずっと続くので省略
msg[29]="29日です"
msg[30]="30日です"
msg[31]="31日です"
var msg = msg[today]; // メッセージ内容 
var speed = 300; // スクロールのスピード(1に近いほど速く) 
var move = 2; // スクロールのなめらかさ(1に近いほどなめらかに) 

function disp(){ 
msg = msg.substring(move, msg.length) + msg.substring(0, move); 
document.f1.mrq.value = msg; 
setTimeout("disp()", speed); 
} 
</script>
</head>
<body onload="disp()">
<div>
<form name="f1"><input type="text" name="mrq" size="60"></form>
</div>
</body>
</html>


お疲れさまでした。

一覧へ戻る