我决定将这个问题拆分,因为事实证明这是一个问题。我使用parseFloat()修复了TypeError,但代码不起作用,所以我提出了一个单独的问题。
我收到错误:
“TypeError:'undefined'不是函数(评估'audio_volume.toPrecision(2)')”
在这段代码上:
var audio_volume = myAudio.volume;
alert(audio_volume);
document.getElementById("Volume_Read").innerHTML = audio_volume.toPrecision(2);
我使用警报线来确保它正在读取音量,并且它工作正常。我认为,出于某种原因,它抱怨.toPrecision(2)
。此代码适用于Chrome,IE和Firefox。它只是在Safari中它不起作用(到目前为止 - 我还没有在Opera中测试过它)。
答案 0 :(得分:2)
无论出于何种原因,听起来myAudio.volume
没有在Safari中返回一个数字,而是返回一些没有toPrecision
方法的其他类型的对象。
因此,在使用之前,请尝试将值转换为数字。
var audio_volume = parseFloat(myAudio.volume);
这证明它的效果就像你期望的那样......你的问题出在其他地方。