2010-08-18 65 views
2

新手的问题,我想:asp.net页面重新加载的JavaScript的onclick功能

的情景:
我有一个包含6名的div和6页的超链接,其链接到JavaScript函数一个asp.net页面:

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"; 
     } 
    } 
} 

的ImageButton:

<a href="" onclick="showdiv('item1');"><img alt="alternate_text" src="imagesource" border="0px" /></a> 

的div有ID的:项目1,ITEM2 ... .item6和超链接指定给javascript函数需要显示的div的id。

问题:
每当我点击一个超链接,我想要实现但页面重新加载太多的影响。真的不知道我要去哪里错,但如果有人能指引我走向正确的方向,我会非常感激。

+0

您正在使用锚标签。但是,你说你正在使用ASP.NET ImageButton控件。前者用于重定向到任何网址。 – pavanred 2010-08-18 13:26:24

回答

5

上点击

onclick="showdiv('item1');return false;" 

更新就返回false:我只是点了问题:),你可以回到你曾经喜欢将误。

onclick="return showdiv('item1');" 

,并说showdiv

+0

非常感谢!就像我刚才提到的那样,这就像一个魅力一样,它的确是一个新手问题,因为Javascript对我来说仍然像中国人,刚开始学习它。再次感谢。 – Anchit 2010-08-18 13:19:23

+2

你能不能只做onclick =“showdiv('item1');”如果在showdiv方法中有'返回false',没有'return'语句?保存一个字和相同的结果。 – Stefanvds 2010-08-18 13:22:10

+1

正如我在我的回答中写的,我强烈建议看看[jQuery](http://www.jquery.com)。将行为直接写入html的onSomeEvent属性是一种糟糕的风格。 – davehauser 2010-08-18 13:25:51

3

总是()返回false,返回false :)

但我宁愿把它的功能

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

+1 Aristos的答案,尽管如果你重构return false;showdiv函数的结尾,你想更新所有的链接。

4

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

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

HTML:

<a id="button1" href="#"><img alt="alternate_text" src="imagesource" /></a> 

的Javascript/jQuery的:

$('#button1').click(function(event) { 
    $('div').hide();  // hides all divs 
    $('#div1').show();  // shows the div with the id 'div1' 
    event.preventDefault(); // prevents postback 
}); 
+0

很好的信息,但这家伙只是开始与JavaScript。我认为他现在对他来说有点牵强附会:) – Stefanvds 2010-08-18 13:25:16

+0

是的,他刚刚开始,我认为最好从头开始学习它;-) – davehauser 2010-08-18 13:28:25

+0

Stefan,是的,它仍然有点牵强为了我。 戴夫,我不想隐藏页面上的所有div,只有那些有他们的css类作为'内容'的人。 – Anchit 2010-08-18 13:30:41

1

return false是关键,因为其他的答案说。

只是为了添加我的tuppence:你并不需要在这里使用锚点,imho它不是很好的语义风格。只需使用span或div,然后问题就消失了。

相关问题