一个困饶了我一天的小问题,现在把我的调试心得给大家,希望大家以后不要走弯路

Go_Rush 2003-01-02 11:27:04
关于media player的,其实真的是小case,但是里面一个细节问题真的令人饶火。

我要做的是在播放文件的同时显示当前播放进度(时间),
以及当前播放文件的总长度(时间).

于是,我这样写:
//获取总个影片的总时间长度
function GetLength(){
return document.all.player.Duration;
}


刚开始的时候,一切都是正常的,但是,当播放的文件很大(超过200MB)的时候,
程序不正常了,因为我的程序比较复杂,跟踪了很久我才发现是GetLength()这个
函数出了问题,于是,我开始调试:

代码改为
try{
return document.all.player.Duration;
}catch(x){alert(x.message);return -1;}

居然没有任何显示。
我在别的函数里面这样调用该函数: alert(GetLength())
也没有任何显示,而且不抱错。

我开始怀疑document.all.player.Duration不能读取巨型文件的大小,可能会边界
益出之类的把。于是,我这样改
try{
var v=document.all.player.Duration;
alert(typeof(v));
alert(isNuN(v));
v++;v--;
alert(typeof(v));
alert(isNuN(v));
return v;
}catch(x){alert(x.message);return -1;}


代码居然一切正常,typeof(v) 显示 v的类型为 Number
isNaN显示为false,说明v还是一个合法的数字。
但是 alert(GetLength()) 还是不运行。。。这个函数仍然不能返回值。

最后,百般无奈的情况下,我这样改了一下:
function GetLength(){
var v=document.all.player.Duration/100;
return v*100;
}


一切OK.

问题虽然解决了,但是我还是搞不懂其中的道理,留给大家作一个参考把。
...全文
29 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxwopal 2003-01-03
  • 打赏
  • 举报
回复
正规的取属性方法是用:getAttribute方法,你试试以下的代码就知道了:

<html>
<head><title>test</title>
<script>
function init()
{
var text = idd.getAttribute("testA");
alert(typeof text);
}
</script>
</head>
<body onload="init()">
<div id="idd" testA="123" testB="bbbbbb"></div>
</body>
</html>
wangxj0600 2003-01-02
  • 打赏
  • 举报
回复
学习中
annkie 2003-01-02
  • 打赏
  • 举报
回复
值得学习.
Lostinet 2003-01-02
  • 打赏
  • 举报
回复
我遇过的一次最烦的问题:

http://expert.csdn.net/Expert/topic/1053/1053733.xml?temp=.2669031
hndllx 2003-01-02
  • 打赏
  • 举报
回复
ok
Go_Rush 2003-01-02
  • 打赏
  • 举报
回复
move first
lipingnan 2003-01-02
  • 打赏
  • 举报
回复
学习
Go_Rush 2003-01-02
  • 打赏
  • 举报
回复
要记住属性里返回的永远是字符串。





var v = document.all.player.Duration
alert(typeof(v)) //显示的是 Number
alert(isNaN(v)) //显示的是 false



fly_dream0323 2003-01-02
  • 打赏
  • 举报
回复
对,JavaScript有些小问题是不能忽视的
xxwopal 2003-01-02
  • 打赏
  • 举报
回复

var v = parseInt(document.all.player.Duration,10)

xxwopal 2003-01-02
  • 打赏
  • 举报
回复
var v = parseInt(document.all.player.Duration/100,10)

不就解决问题了吗?

要记住属性里返回的永远是字符串。

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧