在javascript onclick函数上重新加载asp.net页面

在javascript onclick函数上重新加载asp.net页面,javascript,asp.net,animation,html,Javascript,Asp.net,Animation,Html,新手问题我猜: 场景: 我有一个asp.net页面,其中包含6个div和6个超链接,链接到javascript函数: function showdiv(divname) { hideallcontentdivs(); var targetdiv = document.getElementById(divname); targetdiv.style.display="block"; } var alldivs=new Array(); function hideallconte

新手问题我猜:

场景:
我有一个asp.net页面,其中包含6个div和6个超链接,链接到javascript函数:

function showdiv(divname)
{
   hideallcontentdivs();
   var targetdiv = document.getElementById(divname);
   targetdiv.style.display="block";
}

var alldivs=new Array();
function hideallcontentdivs()
{
   alldivs=document.getElementsByTagName("div");
   for(var i=0; i<alldivs.length;i++)
   {
      if(alldivs[i].className=="content")
      {
         alldivs[i].style.display="none";
      }
   }
}
函数showdiv(divname)
{
hidealcontentdivs();
var targetdiv=document.getElementById(divname);
targetdiv.style.display=“block”;
}
var alldivs=新数组();
函数HIDEALCONTENTDIVS()
{
alldivs=document.getElementsByTagName(“div”);
对于(var i=0;i
div的id为:item1、item2…item6,超链接为javascript函数指定需要显示的div的id

问题:

每当我点击一个超链接,我想要的效果就会实现,但页面也会重新加载。我真的不知道我错在哪里,但如果有人能指引我正确的方向,我将非常感激。

点击后返回false即可

onclick="showdiv('item1');return false;"
更新:我只是指出问题:),您可以随时返回false

onclick="return showdiv('item1');"
并告诉showdiv()返回false

始终返回false:)

但我宁愿把它放在函数中

function showdiv(divname)
{
   hideallcontentdivs();
   var targetdiv = document.getElementById(divname);
   targetdiv.style.display="block";
   return false;
}

+1对于Aristos的回答,尽管如果重构
return false;
showdiv
函数的末尾,您必须更新所有链接。

您应该将
return false
添加到onclick处理程序中。这可以防止链接的默认行为

更好的解决方案是使用jQuery或其他库并将事件附加到元素。它们还包含防止默认行为的特殊函数:

Html:


返回false
是关键,正如其他答案所说


不过,再加上我的一句话:你不需要在这里使用锚,而且这不是很好的语义风格。只需使用一个span或div,问题就解决了。

非常感谢,先生!正如我提到的,这是一个很有魅力的问题,因为Javascript对我来说仍然像中文,只是刚刚开始学习而已再次anks。您是否可以不执行onclick=“showdiv('item1');”如果showdiv方法中有“return false”,则不使用“return”语句?保存一个单词和相同的结果。正如我在回答中所写的,我强烈建议您查看一下。将行为直接写入html的onSomeEvent属性是不好的风格。@Dave对于jQuery,我同意您的看法,我只指出返回值。@Stefanvds Yes它的工作原理是一样的,我只是在我的代码风格中使用返回(当我不使用jQuery时)为了提醒我,我需要返回一些东西,并100%确定是否返回它。有时返回可能是真的或假,取决于函数中的某些条件。信息不错,但这家伙刚刚开始使用javascript。我认为这对他来说现在有点牵强:)是的,他才刚刚开始,我认为学习它更好从一开始就正确;-)Stefan,是的,这对我来说还是有点牵强。Dave,我不想隐藏页面上的所有div,只想隐藏css类为“content”的div。要只隐藏类为“content”的div,可以将第二行更改为
$('.content')。hide()
。jQuery是一个JavaScript库,如果禁用JavaScript,那么jQuery也不会工作。优点是,您可以构建一个不使用JavaScript的站点,然后通过jQuery注入客户端行为并改进站点。例如,您可以更改代码
,这将导致页面滚动到当禁用JavaScript时,使用适当的div。下面是一个示例:(您可以删除JavaScript以测试禁用JavaScript时的行为)您使用的是定位标记。但是,您说您使用的是ASP.NET ImageButton控件。前者用于重定向到任何url。
function showdiv(divname)
{
   hideallcontentdivs();
   var targetdiv = document.getElementById(divname);
   targetdiv.style.display="block";
   return false;
}
<a id="button1" href="#"><img alt="alternate_text" src="imagesource" /></a>
$('#button1').click(function(event) {
    $('div').hide();        // hides all divs
    $('#div1').show();      // shows the div with the id 'div1'
    event.preventDefault(); // prevents postback
});