時間帯によってページ内のリンク先を変える

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



0   名前: Taka : 2006/06/11(日) 20:39  ID:naAReUsT
こんにちは

タイムテーブルを作っているのですが、そのことで質問があります。

7:00〜8:30までは、time.html#0 にジャンプ
8:30〜9:45までは、time.html#1 にジャンプ というようなものを作りたいと思っています。

http://abc1008.com/rdpgm/main.html
を参考にして、

<head>
<script type="text/javascript">
<!--
if(nowTime == ''){
hour = now.getHours();
min = now.getMinutes();
}
nowTime = hour + min;
}

function gotoNowTime(){
if(nowTime >= 0700 && nowTime < 0830){this.location.hash="0"};
if(nowTime >= 0830 && nowTime < 0945){this.location.hash="1"};
}
//-->
</script>
</head>
<BODY onLoad="gotoNowTime()">


という風にしてみたのですが、動かないのです。
初心者なりなのですが、間違っているところなどがあればご指摘いただきたいのです。よろしくお願いします。

1   名前: underStone : 2006/06/11(日) 20:39
nowってなんですか?

2   名前: m035 ◆Wpzr1YKOiq : 2006/06/11(日) 20:39  [URL]  ID:LJTcVQLE
それと凡ミスがいくつかあるようです。
1.nowTimeの宣言がされていないため、if(nowTime == '')は常にfalseとなり成り立たない
2.1が改善されたとしてもnowの宣言がされていないのでif内のnow.getHours()などはエラー
3.対になっていないのでnowTime = hour + min;のあとの閉じ括弧の}が不要

おそらくnow=new Date()でしょう。
それで、どうしてうまく動作しないのかは、
nowTime = hour + min;
の動作を考えればわかるはずです。
上のミスを修正した上で
alert(hour+min);
はどのようになるのか試してみてください。

3   名前: Pid ◆byEkK9OALr : 2006/06/11(日) 20:39
本質的な部分は >>1-2 のご指摘の通りで,瑣末な部分でも気になったのですが,

HTML の問題:
・name 属性で識別しているのか id 属性で識別しているのか不明ですが,id 属性であれば数字だけの値は不可です。

JavaScript の問題:
・location.hash は '#' + 文字列です。
・メソッドにしないなら,this ではなく window で良いと思います。
・タイムラグを減らしたければ,nowTime は load 時に設定した方が良いでしょう。

まあ,細かい部分は徐々に慣れていくとして,最低限エラーメッセージはよく読むようにしましょう。


----
>>2
> 1.nowTimeの宣言がされていないため、if(nowTime == '')は常にfalseとなり

未宣言変数への値の設定は可能(グローバル変数になる)ですが,参照はできませんので,この時点で「nowTime は未宣言です」エラーになるかと。

4   名前: underStone : 2006/06/11(日) 20:39
>>3
Pidさんに何か言うのも気が引けるのですが、
>location.hash は '#' + 文字列です。
って、hashは「#」は不要ではなかったですか?

記憶違いならすいません。

5   名前: Pid ◆byEkK9OALr : 2006/06/11(日) 20:39
ご指摘感謝です (^^)。確認してみましたが,

http://devedge-temp.mozilla.org/library/manuals/2000/javascript/1.3/reference/location.html#1193379
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/hash.asp
http://developer.mozilla.org/en/docs/DOM:window.location
http://www.w3.org/TR/Window/#location-attributes

・hash の取得時には必ず '#' が含まれる。
・hash の設定時については規定がない(JavaScript 1.3 では存在しない hash の設定時にエラーを投げるが,MSDN ではエラーを投げないとある)。

ぶっちゃけよく分かりませんでした。というわけで,>>3 を「'#' 付きが無難かも?」に訂正します。

と言うか,location.href = '#' + id; でいいやん,と今思い付きました。

6   名前: Taka : 2006/06/11(日) 20:39  ID:naAReUsT
ご指導ありがとうございました。がんばってみます。

一覧へ戻る