调试一个包括Javascript的网页,其中涉及货币格式的显示,怎么弄都是在chrome下显示不正常,在IE下正常。更换js库文件也不行。然后通过chrome逐行调试,发现问题没有出现在格式转换上,而是出现在页面元素的命名上面,非IE浏览器许多只支持元素的id属性,通过id属性来命名元素,而不是name属性,如果你的元素只有name属性,在IE下工作正常,但是在非ie浏览器下,如chrome,fireforx,360,淘宝等浏览器下就无法正常工作。所以,必须为页面上的每个元素,要用到的每个元素定义id属性。
Quick Cross Browser JS question, when setting the value of a textbox:
document.getElementById("balanceText").innerText = "111";
and
document.getElementById("balanceText").value = "111";
Both Work grand in IE,
But they will not work in Chrome, FF, Opera or Safari.
Is there an alternate method that will work in these browsers ?
在
http://stackoverflow.com/questions/7714162/document-getelementbyid-innertext-in-chrome找到的答案:
All else being equal document.getElementById("balanceText").value = "111"; works fine in every significant* browser that supports JS.
Make sure that you have one, and only one, element with id="balanceText" and that it actually has that as its id and not just the name.
* you don't care about NS 4 do you?
另外,还需要注意的是,Date的getYeare函数不可用,要用getFullYear函数,显示结果有很大的差异,在非IE浏览器中。
Update1:这个问题的排查,花费了自己3-4个小时,最后通过一步一步调试,在国外找到解决办法。遇到长时间无法解决的问题,不能放弃,但可以适当放一放,有更好的思路,再来处理。坚持但不艰苦,放松但不放弃。
Update2:不要在页面脚本中使用vbscript脚本,也就是vbs,这个只有微软的IE浏览器支持,其他浏览器一概不支持,所以,在编写网页时,尽量避开使用vb脚本。