我试图调用一个javascript函数onclick。我写过类似的东西
<script type="text/javascript">
function readPage(){
alert("Hello");
}
document.getElementById('read').onclick=readPage;
</script>
<a id="read" href="">read</a>
我正在尝试调用readPage函数,但它不起作用?如果我在onclick里面写标签它可以工作,但我上面写的方式不起作用。为什么呢?
答案 0 :(得分:13)
你是怎么做的,但是什么时候没有错。在加载之前,您无法访问DOM (like running getElementById())
。最简单的方法是在window.onload
内运行代码,如下所示:
window.onload = function () {
document.getElementById("read").onclick=readPage;
};
答案 1 :(得分:2)
它将使用空的href
属性(然后将使用页面的当前URL),
但是,如前所述,您必须使用window.onload
来附加点击处理程序,或者必须在script
元素之后移动a
块 。
否则getElementById
找不到该元素,因为它在DOM树中尚不存在。
<a id="read" href="">read</a>
<script type="text/javascript">
function readPage(){
alert("Hello");
return false;
}
document.getElementById('read').onclick=readPage;
</script>
如前所述,您使用例如return false;
使浏览器不关注该网址。如果您将URL更改为href="#"
,您甚至需要这样做,否则浏览器会将页面滚动到顶部。
自己测试:http://jsfiddle.net/Nj4Dh/1/
答案 2 :(得分:0)
您首先必须禁用锚点的默认方向协议(即,不要转到href)
href="#"
。event.preventDefault()
功能示例here。答案 3 :(得分:0)
你应该:
<script type="text/javascript">
function readPage(){
alert("Hello");
}
document.getElementById('read').onclick=readPage;
</script>
<a id="read" href="#">read</a>
答案 4 :(得分:0)
有两种方法可以实现(没有任何浏览器特定功能)。一个是
<script type="text/javascript">
function stopDefault(e) //cross browser function for stopping default actionw
{
if (e && e.preventDefault)
{
e.preventDefault();
}
else
{
window.event.returnValue = true;
}
return false;
}
function readPage(event){
alert("Hello");
return stopDefault(event);//prevent default action
}
window.onload = function(event){
document.getElementById('read').onclick=readPage;
}
</script>
<a id="read" href="#">read</a>
或者:
<script type="text/javascript">
function stopDefault(e)
{
if (e && e.preventDefault)
{
e.preventDefault();
}
else
{
window.event.returnValue = true;
}
return false;
}
function readPage(event){
alert("Hello");
return stopDefault(event);//prevent default action
}
</script>
<a id="read" href="#" onclick="readPage(event)">read</a>
我已经使用了stopDefault函数sd你需要停止链接的默认动作,否则它会尝试转到href中的url。