我有一个音频按钮,应该从服务器获取音频然后“显示”它。我做了console.log()
并且它从服务器获取,但是当我点击音频按钮时它不会播放。当我点击音频按钮时,我的console.log()
会出现错误:
“未捕获的TypeError:无法读取未定义的属性'toLowerCase”
第127行是给出的错误,这是第127行:
var foundID = MEDIAARRAY.audio.lowercase.indexOf($(this).parent().find
('.exerciseWord').html().toLowerCase() + '.mp3')
我使用的全局变量:
var MEDIAARRAY;
var WORDS;
var audioArray;
var audio = new Audio();
这是完整的代码:
$(document).on("click", ".sound", function () {
console.log(audioArray);
var foundID = MEDIAARRAY.audio.lowercase.indexOf($(this).parent().find('.exerciseWord').html().toLowerCase() + '.mp3')
var currentVal = $(this).parent().find('.fa-volume-up');
if (foundID > -1) {
var audio = new Audio();
audio.src = 'TheServerWhereTheAudioIsBeingFetchedFrom' + MEDIAARRAY.audio.path + MEDIAARRAY.audio.files[foundID] + '';
audio.play();
}
});
https://medium.com/@sarahelson81/uncaught-typeerror-cannot-read-property-of-undefined-in-javascript-c81e00f4a5e3我读过这篇文章,它基本上说:如果脚本遇到未定义的变量,它将抛出错误,但我该如何定义toLowerCase
?它只会将字母更改为lowerCase。那么错误引用的是什么?在完整的代码之前我有这个(不确定这是否有用,但也许它是一个密钥?如果没有,请编辑并取出它,因为我不确定它是否非常有用。)
function getFileArray(param)
{
var request = {
language: param
};
$.ajax(
{
url: "TheUrlThatMakesConection",
type: "POST",
async: true,
data: request,
dataType: 'json',
}).done(function (response)
{
console.log(response)
MEDIAARRAY = response;
audioArray = response.audio;
//console.log(audioArray);
});
}