这条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提示第二行不兼容,或者帮我想想一个兼容的办法,谢谢
展开
 我来答
IDC红领巾
2014-11-27 · 超过11用户采纳过TA的回答
知道答主
回答量:15
采纳率:0%
帮助的人:19.9万
展开全部
<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都能支持的,但没什么必要,这个足够的,缺点是不能同时获取两个类,只能一个一个获取,这些就您自己去做兼容了
更多追问追答
追问
谢谢,你的方法确实可以,起码我的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
yakun
2014-11-27 · TA获得超过419个赞
知道小有建树答主
回答量:426
采纳率:0%
帮助的人:287万
展开全部
var dom = document.getElementsByClassName("pictime");应该这个方法不可用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式