在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
});