版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Sunny__wei/article/details/71195121
今天在写jsp页面时遇到一个有关onclick事件无效的问题,在这里分享一下:
<body>
<div>
<input type="text" id="name"/>
</div>
<div id="hint">
<ul id="ul" >
<li onclick="voluation();">aa</li>
</ul>
</div>
</body>
<script type="text/javascript">
$(function()
{
function voluation()
{
alert("方法被调用");
}
});
</script>
如上代码发现绑定的onclick事件怎么都不能被触发,最后发现voluation()函数写在
只需要把voluation()函数定义到外面就可以了
<body>
<div>
<input type="text" id="name"/>
</div>
<div id="hint">
<ul id="ul" >
<li onclick="voluation();">aa</li>
</ul>
</div>
</body>
<script type="text/javascript">
$(function()
{
});
function voluation()
{
alert("方法被调用");
}
</script>
那么问题又来了jsp是从上至下执行,为什么voluation()函数在绑定事件的下面也会被绑定上呢?这是因为页面加载过程中,浏览器会对页面上或载入的每个js代码块(或文件)进行扫描,如果遇到定义式函数,则进行预处理,处理完成之后再开始由上至下执行;遇到赋值式函数,则只是将函数赋给一个变量,不进行预处理,待调用到的时候才进行处理。