2011-07-20 11 views
0

私は自分のサイトの掲示板をプログラミングしています。すべてのメッセージはデータベースの自動インクリメントによってIDを取得します。ボード上のメッセージは、 "li id =#"タグの下にあり、 "li"はIDをデータベースから取得します。私はjavascriptを使ってスクロール機能を作成しようとしましたので、上下の矢印がメッセージ全体に移動します。#idでスクロールするdiv、何が間違っていますか?

down.node.onclick = function() { // down arrow 

var msgs = document.getElementById("kommentit"); // the <ul> element 
var a = new Array(); 


if (msgs.hasChildNodes()) { 
    var children = msgs.childNodes; 
    for (var i = 0; i < children.length; i++) { 
     if (msgs.childNodes[i].tagName == "LI") { 
      a.push(msgs.childNodes[i].id); // array with the id's 
     } 
    } 

} 

for (var i = 0; i < a.length; i++) { // this is what goes wrong 
    parent.location.href = '#' + 'a[i + 1]'; 
} 

ので、配列が実際の機能が動作しない正しい値を取得しながら:

これは私がこれまで持っているものです。私がクリックすると、このコードで私は/ index.php#[a + 1]を私のURLとして取得します。

"+ a [i + 1] + ''を使用すると、ページは#undefinedで解決するまで配列全体を更新します。

IDの形式は "id-xx"なので、問題はありますか?私はmsgs.childNodes [i] .id.split( "id-")を使ってIDを分割しようとしましたが、これを行うと配列の値として "xx"が得られます。

答えて

1

はあなたがにスクロール最後の項目を追跡する必要があることをしてみてください。 自転車を発明するのではなく、JSフレームワークとプラグインを使ってスクロールすることをお勧めします。それはあなたに多くの時間を節約します。

例は以下のとおりです。

  • jQuery - フレームワーク
  • jCarousel - スクロールプラグイン
+0

十分に公正、それは働くことができるように見えます。ありがとう! –

1

は、あなたが次の項目にそれぞれの時間をスクロールしたい場合は

down.node.onclick = function() { // down arrow 

var msgs = document.getElementById("kommentit"); // the <ul> element 
var a = new Array(); 


if (msgs.hasChildNodes()) { 
    var children = msgs.childNodes; 
    for (var i = 0; i < children.length; i++) { 
     if (msgs.childNodes[i].tagName == "LI") { 
      a.push(msgs.childNodes[i].id); // array with the id's 
     } 
    } 

} 

for (var i = 0; i < a.length; i++) { // this is what goes wrong 
    parent.location.href = '#' + a[i]; 
} 
+0

'+ a [i + 1] +' 'と同じことは、配列全体を通り、#undefinedで解決します。 (場所は最後の実際の値になります) –

+0

jsfiddle.netに例を挙げることができますか? – Fender

+0

http://pohjis.site40.net/testi.phpそれを見つけることができますが、矢印だけが機能しています –

0

なぜあなたは配列のインデックスに1を加えていますか?

for (var i = 0; i < a.length; i++) { // this is what goes wrong 
    parent.location.href = '#' + a[i]; 
} 

をしかし、上記のようなURLを変更すると、ユーザーの歴史の中に、物事の負荷を追加し、背中を破るように私はおそらく、このような何かのためにjqueryの(または類似)を使用したい:

あなたが試してみましたボタン。

+0

ああ、もう一度同じことをする前にすべてのことをスクロールします。あなたのフィードバックもありがとう、私は以前に提案されたjCarouselを試していると思う。初心者のビット、これは私の最初のプログラミングので、多くのことをすべての時間を学ぶです。 –

関連する問題