在JSP中调用的JS方法在IE中好用,到了Firefox下不好用了
JSP文件:
<html:text property="testDate" style="width: 40%" onclick="setday(this)" maxlength="10" onkeydown="javascript:return false;"/>
setday是调用的calendar.js文件中的一个方法JSP中引入JS文件
<script type="text/javascript" src="<html:rewrite page='/js/calendar.js'/>"></script>calendar.js文件setday方法:function setday(tt)
{
 
 alert(tt);
}//alert处没有打出任何信息,很是奇怪
上面写的调用calendar.js文件setday方法的代码,在IE下正常看到提示信息
FireFox下没有任何提示,即setday方法没有被调用,请高手指点,十分感谢!

解决方案 »

  1.   

    一般的问题是这么导致:
    1,js文件路径问题
    2,js文件编码问题
    3,js文件中有其他代码导致的脚本错误问题
    js
    是前端代码,你看浏览器中的源代码就可以了,贴服务器端的代码意义不大
      

  2.   

    通过给元素上面加onclick指定, 就相当于document.getElementById('test').onclick = (function(){})的使用方式.由于firefox并不支持对象的onxxxx这样的事件属性(这是IE中独有的), 所以, 尽可能的使用标准的DOM事件处理方式: document.getElementById('test').addEventListener('click', (function(){}), true), 其中最后一个参数是为了表明是在捕获阶段触发该事件, 还是在冒泡阶段....有关捕获阶段和冒泡阶段可以查看IE和W3C各自的事件处理的发展....在知道上面这些之后, 就需要做跨浏览器处理:
    对于你这里的问题, 简单处理(不要给标签上直接加onclick属性)
    注意, 下面的处理只是认为只有IE和标准浏览器, 没有做更细化的跨浏览器, 当然, 对于一些伪装也没有检测.
    <script type="text/javascript">
    function handle() {
        alert();
    }
    var ele = document.getElementById('test');
    if(window.navigator.userAgent.indexOf("IE") == -1) {
        ele.addEventListener('click', handle, true);
    } else {
        ele.onclick = handle;
    }
    </script>
      

  3.   

    浏览器解析后HTML代码<input name="testDate" maxlength="10" value="" onclick="setday(this)" onkeydown="javascript:return false;" style="width: 40%;" type="text">
    跟IE解析的是一样的,(~ o ~)~zZ
      

  4.   


    <input name="testDate" maxlength="10" value="" onclick="setday(this)" onkeydown="javascript:return false;" style="width: 40%;" type="text"><script>
    function setday(o)
    {
     alert(o.value)
    }
    </script>
    没有任何问题。
    是你其他的地方干扰的
      

  5.   

    为了便于测试,calendar.js文件中只有setday方法:function setday(tt)
    {
     
     alert(tt);
    }工程路径检查过,
    同样引入calendar.js文件,
    setday方法在IE下面可以正常访问在FireFox下就没反应,郁闷
      

  6.   

    calendar.js文件中,是不是需要有JS的文件头和尾???现在这个文件里只有function setday(tt)
    {
     
     alert(tt);
    }
      

  7.   

    试试  <input name="testDate" id="testDate" maxlength="10" value="" onclick="setday('testDate')" onkeydown="javascript:return false;" style="width: 40%;" type="text"/>    <script>
    function setday(testId)
    {
        alert("调用了");
        alert(document.getElementById(testId).value);
    }
    </script>
      

  8.   

    在calendar.js中加入一句(function (){
        alert("加载了!");
    })();试一试calender文件在FF下到底加载了没有..
      

  9.   

    试了一下,不用引入calendar.js的方式直接在JSP文件中添加
    function setday(tt)
    {alert(tt);
    }可以执行难道是JS引入那句代码没有识别??
    <script type="text/javascript" src="<html:rewrite page='/js/calendar.js'/>"></script>
      

  10.   

    查看浏览器源代码
    <script type="text/javascript" src="<html:rewrite page='/js/calendar.js'/>"></script>
    生成的是什么
      

  11.   

    最新进展,换了一个JS日历,清了FF的缓存好用了,O(∩_∩)O~还得弄一个小时和分的JS,修改中~~~
      

  12.   

    还有为什么我把这句标准:“<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">”删掉就可以了,加上就不行了呢?