用#id滚动div,我做错了什么?

时间:2011-07-20 11:29:40

标签: php javascript

我正在为我的网站编写留言板。每条消息都通过数据库中的自动增量获得id。主板上的消息位于“li id =#”标签下,其中“li”从数据库中获取id。我试图通过javascript创建滚动功能,以便向上和向上箭头在整个消息中移动。

这是我到目前为止所得到的:

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]作为我的网址。

如果我使用''+ a [i + 1] +'',页面会刷新整个数组,直到它以#undefined结算。

id的格式为“id-xx”,问题是什么?我尝试使用msgs.childNodes [i] .id.split(“id-”)来分割id,但是如果我这样做,我会将“,xx”作为我在数组中的值。

3 个答案:

答案 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];
}

答案 1 :(得分:1)

如果您希望每次必须追踪滚动到的最后一个项目时滚动到下一个项目。 不发明自行车,我建议你使用一些JS框架和插件进行滚动。它会为你节省很多时间。

例如:

答案 2 :(得分:0)

为什么要在数组索引中加1?

你试过了吗?

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

但我可能会使用jquery(或类似的)来做这样的事情,因为像上面那样更改url会在用户的历史记录中添加大量内容并打破后退按钮。