新手问题我猜:
情景:
我有一个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";
}
}
}
的ImageButton:
<a href="" onclick="showdiv('item1');"><img alt="alternate_text" src="imagesource" border="0px" /></a>
div有id:item1,item2 .... item6,超链接为javascript函数指定需要显示的div的id。
问题:
每当我点击超链接时,都会实现我想要的效果,但页面也会重新加载。我真的不知道自己哪里出错了,但如果有人能指引我走向正确的方向,我会非常感激。
答案 0 :(得分:5)
点击
时返回falseonclick="showdiv('item1');return false;"
更新:我只是指出问题:),您可以随时返回错误。
onclick="return showdiv('item1');"
并说showdiv()返回false
答案 1 :(得分: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
});
答案 2 :(得分:3)
总是,返回false:)
但我宁愿把它放在函数
中function showdiv(divname)
{
hideallcontentdivs();
var targetdiv = document.getElementById(divname);
targetdiv.style.display="block";
return false;
}
答案 3 :(得分:1)
+1,但如果您将return false;
重构为showdiv
函数的末尾,则必须更新所有链接。
答案 4 :(得分:1)
return false
是关键。
只是为了添加我的tuppence:你真的不需要在这里使用锚点,而且它不是很好的语义风格。只需使用span或div,然后问题就会消失。