这条JS,IE8下不兼容,没效果
window.onload=function(){vardom=document.getElementsByClassName("pictime");for(vari=0...
window.onload = function(){
var dom = document.getElementsByClassName("pictime");
for(var i =0;i<dom.length;i++) {
(function (dom) {
var value = dom.innerText;
if (value) {
try {
value = parseInt(value);
} catch (e) {
value = 0;
}
}
var min = Math.floor(value / 60) + "".length == 2 ? Math.floor(value / 60) + "" : "0" + Math.floor(value / 60);
var secondes
if( value%60!=0){
if(value > 9)
secondes = value % 60
else
secondes = "0" + value % 60
}else{
secondes = "00";
}
var resultValue = min + ":" + secondes;
dom.innerText = resultValue;
})(dom[i]);
}
}
IE8下没效果,数字不能转换。360的极速和QQ浏览器有效,360的兼容模式下也不行。
高手帮我看看,是不是这条JS有错误,IE8提示第二行不兼容,或者帮我想想一个兼容的办法,谢谢 展开
var dom = document.getElementsByClassName("pictime");
for(var i =0;i<dom.length;i++) {
(function (dom) {
var value = dom.innerText;
if (value) {
try {
value = parseInt(value);
} catch (e) {
value = 0;
}
}
var min = Math.floor(value / 60) + "".length == 2 ? Math.floor(value / 60) + "" : "0" + Math.floor(value / 60);
var secondes
if( value%60!=0){
if(value > 9)
secondes = value % 60
else
secondes = "0" + value % 60
}else{
secondes = "00";
}
var resultValue = min + ":" + secondes;
dom.innerText = resultValue;
})(dom[i]);
}
}
IE8下没效果,数字不能转换。360的极速和QQ浏览器有效,360的兼容模式下也不行。
高手帮我看看,是不是这条JS有错误,IE8提示第二行不兼容,或者帮我想想一个兼容的办法,谢谢 展开
2个回答
展开全部
<script type="text/javascript">
var getElementsByClass = function(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
window.onload = function(){
var dom = getElementsByClass("pictime",document,"div");
for(var i =0;i<dom.length;i++) {
(function (dom) {
var value = dom.innerText;
if (value) {
try {
value = parseInt(value);
} catch (e) {
value = 0;
}
}
var min = Math.floor(value / 60) + "".length == 2 ? Math.floor(value / 60) + "" : "0" + Math.floor(value / 60);
var secondes
if( value%60!=0){
if(value > 9)
secondes = value % 60
else
secondes = "0" + value % 60
}else{
secondes = "00";
}
var resultValue = min + ":" + secondes;
dom.innerText = resultValue;
})(dom[i]);
}
}
</script>
不兼容的话你找我,兼容的话采纳,低版本是不支持getElementsByClassName的,看不懂的继续追问,如果你有加载JQuery的话可以直接使用JQ来获取类,网上还有一个超级长的连IE5都能支持的,但没什么必要,这个足够的,缺点是不能同时获取两个类,只能一个一个获取,这些就您自己去做兼容了
var getElementsByClass = function(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
window.onload = function(){
var dom = getElementsByClass("pictime",document,"div");
for(var i =0;i<dom.length;i++) {
(function (dom) {
var value = dom.innerText;
if (value) {
try {
value = parseInt(value);
} catch (e) {
value = 0;
}
}
var min = Math.floor(value / 60) + "".length == 2 ? Math.floor(value / 60) + "" : "0" + Math.floor(value / 60);
var secondes
if( value%60!=0){
if(value > 9)
secondes = value % 60
else
secondes = "0" + value % 60
}else{
secondes = "00";
}
var resultValue = min + ":" + secondes;
dom.innerText = resultValue;
})(dom[i]);
}
}
</script>
不兼容的话你找我,兼容的话采纳,低版本是不支持getElementsByClassName的,看不懂的继续追问,如果你有加载JQuery的话可以直接使用JQ来获取类,网上还有一个超级长的连IE5都能支持的,但没什么必要,这个足够的,缺点是不能同时获取两个类,只能一个一个获取,这些就您自己去做兼容了
更多追问追答
追问
谢谢,你的方法确实可以,起码我的IE8可以自动转换。
不过有个问题还需要请教,原先的代码有些会显示 011:40,或者04:4
我的意思是想显示的是 11:40和04:04,不过代码当中是什么导致了这个问题。
这个问题解决了就完美了,不吝赐教,谢谢。
追答
仔细看了一下才发现根本不知道你要干什么…innerText你W3C标准跑得起来?然后获取class为pictime的值又是干嘛的?为什么要try?这个很消耗资源的,非必要情况下没人这样用。
然后你会出现011这种情况是因为你这句var min = Math.floor(value / 60) + "".length == 2 ? Math.floor(value / 60) + "" : "0" + Math.floor(value / 60);,这里设计一个知识点就是数值是不能用length判断的!!你有两个解决办法,一个是判断是否大于10,不是的话+0,一个是将其变成字符串形式,你那样的写法有写跟没写一样,+“”是无法将number类型变成string类型的,你需要调用toString()方法,即Math.floor(value / 60)。toString() == 2?
最后,你写的方式我看不懂你究竟想干嘛,看你命名目测做个计时器,但你这样搞你得追问我很多次,所以你直接上W3C,里面有一个计时器的例子,查百度setTimeout进W3C,点击那个一个时钟,好好参考一下,你这写得我实在没法不吐槽了,sorry
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询