<script>
<!--
    function go(){
        alert(111);
    }
//-->
</script><div onClick="go()"></div>

解决方案 »

  1.   

    <div onclick="javascript:function go(){alert(111);}go();"></div>
      

  2.   

    onClick="javascript:( function(){alert(111);} )()"
      

  3.   

    <div onclick="javascript:var go=function(){alert(111)};go();">div 可用</div>
    <div onclick="go()">div1 不可用</div>
      

  4.   

    <div onclick="javascript:go=function(){alert(111)};go();">div 可用</div><br />
    <br />
    <br />
    <div onclick="go()">div1 不可用</div>怪了, 先点击 最上面那个, 再点击下面那个, 两个就都能用了, 先点击下面那个报错. 
    谁给讲讲原理.
      

  5.   

    很简单,上面那个go你没有用var go=...所以定义成全局变量onclick="..."相当于onclick = function(){...}或new Function("...")
      

  6.   

    呵呵, 楼上说得是, 不过脚本级本来应该 var 与没有 var 一样的..怪, 我试了加上 var, 就真的报错了. 
    脚本级? 函数级? 真难理解.
      

  7.   

    <div onclick="javascript:function go(){alert(111);}go();"></div>
    相当于
    <div onclick="javascript:var go=function(){alert(111);};go();"></div>简洁的写法就是这样:
    <div onclick="javascript:function(){alert(111);}();"></div>===
    inline方式的 onclick="javascript:N多语句"
    其实相当JS语句如下定义方式:
    divID.onclick=function(){N多语句};
    所以,如果只在里面定义一个函数然后又立即调用,想来真是没必要,直接写语句就好了。
    如果这个函数不止这一个地方调用,考虑下可读性,那完全可以弄到前面别的地方去定义。