点击<a> cause reloading of the page insted of executing JS code</a>

时间:2011-06-16 08:39:46

标签: javascript html

我的网址:http://www.example.com/?product=3&url=XYZ

我的代码:

<a href="#" onclick="foo();return false;">link</a>

点击后,页面正在重新加载,而不是执行foo()函数。

JS已启用。 foo()的身体:

function foo() { alert("sss"); }

可能这个问题是由我网站的网址引起的。 XYZ参数是网站的网址,但有“%C5%82%C3%B3”而不是特殊字符(类似于使用htmlspecialchars()之后)。

有趣的是,点击页面后会重新加载“普通”网址,例如:http://www.example.com/?product=3&url=http://www.example.com(包含“/”等特殊字符)。

我该怎么做才能解决这个问题?

修改 以上代码工作正常。感谢您的时间。

3 个答案:

答案 0 :(得分:4)

是的,肯定会有其他事情发生在这里。这是一个很好的例子:

<html>
<body>
<a href="#" onclick="foo();return false">link</a>
<script type="text/javascript">
function foo() { alert("hi"); }
</script>
</body>
</html>

分配onclick内联不是一个好习惯,你应该做类似

的事情
<a id="someId" /* ... */ >
// ...
<script type="text/javascript">
function foo() { alert("hi"); return false; }
document.getElementById("someId").onclick = foo;
</script>

但无论如何,最可能的罪魁祸首是你的脚本在某处有语法错误而根本没有加载。您可以通过设置onclick="return false"来验证这一点。如果 不起作用,则可能是您正在触发其他一些事件处理程序。但是因为上述 - 我们所知道的所有代码 - 都有效,所以没有人可以在没有更多信息的情况下诊断出问题所在。

答案 1 :(得分:0)

修改

没关系,我完全假设你的代码没有用,下面的代码也没用。但我想你发布的代码已经是正确的了。


单独注意,你应该避免使用像onClick这样的属性,而是创建事件处理程序(我建议看看jQuery)。

答案 2 :(得分:0)

我在我的系统中尝试了相同的代码。代码正在工作,警报框可见。

我的代码:

<a href="#" onclick="foo();return false;">link/a>

和javascript是

<script type="text/javascript">

function foo()
    {
    alert("sss"); 
 }

</script>

我正在使用vs2008