点击后如何自行更新链接?

时间:2011-11-29 03:03:16

标签: javascript jquery

我有下一个链接,允许用户浏览URL列表(存储在数组中)。当用户单击下一步时,我希望为我的阵列中的下一个网站更新链接href和锚点。到目前为止我尝试过的方式,它每次链接都会跳过一个URL,我知道为什么,它与之前的点击有关甚至没有完成,但是这样做的正确方法是什么?

这是一个示例,因此您可以准确地看到我在说什么:http://jsbin.com/atobep

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script>


$(document).ready(function(){

    var items = [];
    $.each(urls, function(i, item) {
        items.push("<li>"+item['name']+"</li>");
    });

    $('#list').append(items.join(''));

    changeNextLink(0);
    $("#frame").attr('src', urls[0]['url']);

});

var urls = [{"name":"ebay","url":"http://ebay.com"},{"name":"amazon","url":"http://amazon.com"},{"name":"msn","url":"http://msn.com"},{"name":"yahoo","url":"http://yahoo.com"},{"name":"wikipedia","url":"http://wikipedia.org"}];

function changeNextLink(x){     

    $('#now').html(urls[x]['name']); //show the name of currently loaded page
    $('#nextLink').html(urls[x+1]['name']); //name of next website as anchor of next link
    $('#nextLink').attr('href', urls[x+1]['url']); //url to next website
    $('#nextLink').attr('onclick','changeNextLink('+(x+1)+')'); //the problem spot. prepare next link for next click.

}
</script>
</head>
<body>

    <ol id="list"></ol>

    now: <span id="now"></span> | next: <a href="" target="frame" id="nextLink"></a><br />
    <iframe name="frame" src="" id="frame" style="width:500px; height:600px;"></iframe>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

如何添加新的var以跟踪下一个链接num,并为#nextLine添加点击处理程序:

$(document).ready(function(){
    var nextLinkNum = 0;
    var items = [];
    $.each(urls, function(i, item) {
        items.push("<li>"+item['name']+"</li>");
    });

    $('#list').append(items.join(''));

    changeNextLink(nextLinkNum);
    $("#frame").attr('src', urls[0]['url']);

    $('#nextLink').click(function() { 
        if (nextLinkNum + 1 < urls.length)
            changeNextLink(++nextLinkNum); 
    });

});

function changeNextLink(x){     
    $('#now').html(urls[x]['name']); //show the name of currently loaded page
    $('#nextLink').html(urls[x+1]['name']); //name of next website as anchor of next link
    $('#nextLink').attr('href', urls[x+1]['url']); //url to next website
    $('#nextLink').attr('onclick','changeNextLink('+(x+1)+')'); //the problem spot. prepare next link for next click.
}

答案 1 :(得分:0)

我对你的javascript进行了一些细微的修改,现在看起来工作正常......

http://jsbin.com/atobep/5/edit

首先它会检查列表中是否有另一个url,如果不是,则下一个url将设置为当前url(如果需要,可以将其设置回第一个url)。如果列表中有另一个,则将其设置为下一个URL。