2010-08-18 55 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,然後問題就消失了。