時間帯によってページ内のリンク先を変える
-
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
- ご指導ありがとうございました。がんばってみます。