开发者

tabs in javascript resetting

开发者 https://www.devze.com 2023-01-15 02:15 出处:网络
Sorry this is probably stupid wood for trees stuff but: All I want is a div with a couple of links - you click on the links and you switch to another div. Standard tab stuff.That\'s it. But when I ru

Sorry this is probably stupid wood for trees stuff but:

All I want is a div with a couple of links - you click on the links and you switch to another div. Standard tab stuff. That's it. But when I run the code below, it switches to the div I want then resets straight back to the original div. Why?

the Javascript:

number_of_pages = 4;  
function cyber(page)
{  
    for(i = 1; i <= number_of_pages; i++)  
    {  
        off = 'monitor' + i;  
        document.getElementById(off).style.display = 'none';  
    }  
    on = 'monitor' + page;  
    docume开发者_开发百科nt.getElementById(on).style.display = 'block';  

    alert(on); //debug  
}

the CSS:

.monitor{width: 400px; border: 1px solid #333; padding: 10px 10px 10px 10px}

the HTML:

<div class="monitor" id="monitor1" style="display: block">  
<a href="" onclick="cyber(2)">foo</a><br />  
<a href="" onclick="cyber(3)">bah</a><br />  
</div>  

<div class="monitor" id="monitor2" style="display: none">
<a href="" onclick="cyber(1)">homepage</a>
</div>

etc...

Many thanks in advance.


That's because the browser is actually following the href="" directive, which is to reload the current page, immediately after it executes the javascript. You need to return false on the onclick handler to prevent browser from obligating to the href:

number_of_pages = 4;  
function cyber(page)
{  
    for(i = 1; i <= number_of_pages; i++)  
    {  
        off = 'monitor' + i;  
        document.getElementById(off).style.display = 'none';  
    }  
    on = 'monitor' + page;  
    document.getElementById(on).style.display = 'block';  

    alert(on); //debug

    return false;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消