2012-02-13 60 views
0

一起工作我有这个简单的代码,我只是无法让它工作。javascript onclick不能与`p.click =`

<html> 
<head> 
<script type="text/javascript"> 
window.onload = function() { 
    p = document.getElementById("foo"); 
p.click = function() { alert(p); }; 
} 
</script> 
</head> 
<body> 
<div id="foo" style="position:relative;width:100px;height:100px;background-color:red;"> </div> 

</body> 

</html> 

Javascript is turned on。Javascript is turned on。如果我把()函数后,我可以让它自动运行。但是,onclick仍然无法工作。 Firebug没有显示任何错误。

回答

1

请更新如下使用VAR。尝试。

p.onclick = function() { alert(p); }; 
+1

是的,它应该是用户var p = document.getElementById(“foo”);虽然它正在工作。 http://stackoverflow.com/questions/1470488/difference-between-using-var-and-not-using-var-in-javascript – 2012-02-13 02:32:09

1
p.onclick = function() { alert(p); }; 

和......还记得当你创建一个新的变种

var p = document.getElementById("foo"); 
2

我认为你需要添加一个事件处理程序/侦听器的“click”事件,而不仅仅是指定“p.click = ...”

你可以试试这个:

function whenLoaded() { 
    var p = document.getElementById("foo"); 
    p.addEventListener("click", function(){alert(p)}, false); 
} 

document.addEventListener("DOMContentLoaded", whenLoaded, false); 

*注意:附加事件监听器因浏览器而异,所以你想使用一个抽象差异的库...... Jquery可以做到这一点,Bean(https://github.com/fat/bean)就是为此而构建的。你也可以检查出达斯汀·迪亚兹的domready中,如果你只是寻找一个小的跨浏览器的加载事件处理程序样胜的 - https://github.com/ded/domready

+0

如果您在第一个浏览器中使用特定于浏览器的方法,那么跨浏览器监听器就很困难地点。只需将侦听器赋予元素的'onclick'属性,它就可以在支持脚本的每个浏览器中工作。 – RobG 2012-02-13 03:04:45

0

如果您使用jQuery,试试这个:

$(document).ready(function() { 
    p = document.getElementById("foo"); 
    $(p).click(function(){ 
    alert(p); 
    }); 
});