我在a.js文件定义这个方法函数:
function showMainboardTab(menuname,menuid) {
             alert('why show me?');
       }b.jsp 引用了 a.js文件 当 a.js 调用 showMainboardTab 方法时 如何在JSP 页面里重写这个方法 执行另外的语句 

解决方案 »

  1.   

    因为也面本身 的JS 函数的优先权大于引用外部的JS文件,所以直接在 JSP 也面里面重写函数
    function showMainboardTab(menuname,menuid) { 
         //。
    }
    即可,
      

  2.   

    首先,楼主要明白这点就要清楚:
    1.HTML的是被浏览器按顺序解析的,那么我们看下面的例子
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
    <script type="text/javascript" src="1.js"/>
    <script type="text/javascript">
    function fnTest(){
    alert("show me second!");
    }
            </script>
        </head>
        <body>
    <input type="button" value="clickMe" onclick="fnTest()"/>
        </body>
    </html>
    先引入了<script type="text/javascript" src="1.js"/>如下:
    function fnTest(){
    alert("show me first!");
    }
    这时点击clickMe弹出的是show me second!先不说明.
    我们再看下面的例子:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
        <head>

    <script type="text/javascript">
    function fnTest(){
    alert("show me second!");
    }
            </script>
            <script type="text/javascript" src="1.js"/>
        </head>
        <body>
    <input type="button" value="clickMe" onclick="fnTest()"/>
        </body>
    </html>
    <script type="text/javascript" src="1.js"/>作为后来引入的,如下:
    function fnTest(){
    alert("show me first!");
    }
    这时点击clickMe弹出的是show me first!
    这个很好理解,因为浏览器按顺序解析的,先创建的fnTest()就被后创建的fnTest()覆盖了.那么这是为什么呢?我们来看第二点:
    2.javascript方法其实是个引用
    function fnTest(){
    alert("show me first!");
    }
    //相当于:
    var fnTest = new Function("alert('show me first!')");function fnTest(){
    alert("show me second!");
    }
    //相当于:
    var fnTest = new Function("alert('show me second!')");
    //那么结果是:
    var fnTest = new Function("alert('show me first!')");
    var fnTest = new Function("alert('show me second!')");
    最后就是按靠后调用的.先创建的方法将不被调用.得到的是show me second!