+ -
当前位置:首页 → 问答吧 → a href="#"的问题,高手来解释下

a href="#"的问题,高手来解释下

时间:2010-05-21

来源:互联网

把这段代码保存为index.html
<style type="text/css"> #test1{ display:block; } #test2{ display:none; } </style> <script type="text/javascript"> function $G(Read_Id) { return document.getElementById(Read_Id) } function Effect(test1,test2,parentId){ var test1 = $G(test1); test2 = $G(test2); if (test1.style.display = 'block'){ test1.style.display="none"; test2.style.display="block"; $G(parentId).innerHTML = "<a href='#' onClick=javascript:Effect('"+test1+"','"+test2+"','"+parentId+"');>打开test1</a>" }else { test1.style.display="block"; test2.style.display="none"; $G(parentId).innerHTML = "<a href='#' onClick=javascript:Effect('"+test1+"','"+test2+"','"+parentId+"');>打开test2</a>" } } </script> <div id="aa"><a href="#" onclick="Effect('test1','test2',this.parentNode.id)">打开test2</a></div> <div id="test1">test1</div> <div id="test2">test2</div>
 提示:您可以先修改部分代码再运行
运行发现不正常,错误为点击“打开test1”无效,
然后把
$G(parentId).innerHTML = "<a href='#' onClick=javascript:Effect('"+test1+"','"+test2+"','"+parentId+"');>打开test1</a>"
中的href='#'
改成href='index.html'
就正常了,这是为什么呢,希望高手来解答下

[ 本帖最后由 lishaojun95272 于 2010-5-21 00:16 编辑 ]

作者: lishaojun95272   发布时间: 2010-05-21

function Effect(test1,test2,parentId){}
中 parentId 怎么没见你定义呢?

作者: cwq2jxl   发布时间: 2010-05-21

$G(parentId)
这不是定义了吗

作者: lishaojun95272   发布时间: 2010-05-21


<style type="text/css"> #test1{ display:block; } #test2{ display:none; } </style> <script type="text/javascript"> function $G(Read_Id) { return document.getElementById(Read_Id) } function Effect(test1,test2,parentId){ var test1 = $G(test1); test2 = $G(test2); if (test1.style.display == 'block'){ test1.style.display="none"; test2.style.display="block"; $G(parentId).innerHTML = "<a href='javascript:void(0)' onClick=javascript:Effect('"+test1+"','"+test2+"','"+parentId+"');>打开test1</a>" }else { test1.style.display="block"; test2.style.display="none"; $G(parentId).innerHTML = "<a href='javascript:void(0)' onClick=javascript:Effect('"+test1+"','"+test2+"','"+parentId+"');>打开test2</a>" } } </script> <div id="aa"><a href="javascript:void(0)" onclick="Effect('test1','test2',this.parentNode.id)">打开test2</a></div> <div id="test1">test1</div> <div id="test2">test2</div>
 提示:您可以先修改部分代码再运行

作者: next100   发布时间: 2010-05-22


<style type="text/css"> #test1{ display:block; } #test2{ display:none; } </style> <script type="text/javascript"> function $G(Read_Id) { return document.getElementById(Read_Id) } function Effect(test1,test2,parentId){ var test1x = $G(test1); var test2x = $G(test2); if (test1x.style.display =='block'||test1x.style.display ==''){ test1x.style.display="none"; test2x.style.display="block"; $G(parentId).innerHTML = "<a href='javascript:void(0)' onClick=Effect('"+test1+"','"+test2+"','"+parentId+"')>打开test1</a>"; }else { test1x.style.display="block"; test2x.style.display="none"; $G(parentId).innerHTML = "<a href='javascript:void(0)' onClick=Effect('"+test1+"','"+test2+"','"+parentId+"')>打开test2</a>" } } </script> <div id="aa"><a href="javascript:void(0)" onclick="Effect('test1','test2',this.parentNode.id)">打开test2</a></div> <div id="test1">test1</div> <div id="test2">test2</div>
 提示:您可以先修改部分代码再运行
之前发的有个错误,这次发的没问题。你的代码里面有很多错误。

作者: next100   发布时间: 2010-05-22

楼上用“href='javascript:void(0)'”,这个不错,

我试了一下,就用“href='javascript:'”也可以哦!

作者: yypz   发布时间: 2010-05-22

感谢next100的热心回答,还有个问题想请教下
为什么要把
var test1 = $G(test1);
var test2 = $G(test2);
改成
var test1x = $G(test1);
var test2x = $G(test2);呢?

作者: lishaojun95272   发布时间: 2010-05-22

$G(parentId).innerHTML = "<a href='javascript:void(0)' onClick=javascript:Effect('"+test1+"','"+test2+"','"+parentId+"');>打开test1</a>"
你觉得这段代码里面的test1是什么值?
因为你之前有var test1 = $G(test1);所以他不是最初的test1,而是 $G(test1)。而$G(test1)是个Object,不是你想要传给Effect函数的id

作者: next100   发布时间: 2010-05-22

豁然开朗了,再次感谢next100的热心回答

作者: lishaojun95272   发布时间: 2010-05-25