Javascript 未捕获类型错误:无法读取属性';指数';未定义的

Javascript 未捕获类型错误:无法读取属性';指数';未定义的,javascript,jquery,user-interface,frontend,jquery-events,Javascript,Jquery,User Interface,Frontend,Jquery Events,我希望文档外的显示功能就绪。如果时间等于零,它必须告诉我是非,但我得到了一个错误: 未捕获的TypeError:无法读取未定义的属性“indexOf” $(文档).ready(函数(){ droppableId=$(this)[0].id; DragTableId=ui.DragTable[0].id; var show=函数(ui、droppableId、DragTableId){ if(wordMap[droppableId].indexOf(draggableId)!=-1){ ui.dr

我希望文档外的显示功能就绪。如果时间等于零,它必须告诉我是非,但我得到了一个错误:

未捕获的TypeError:无法读取未定义的属性“indexOf”

$(文档).ready(函数(){
droppableId=$(this)[0].id;
DragTableId=ui.DragTable[0].id;
var show=函数(ui、droppableId、DragTableId){
if(wordMap[droppableId].indexOf(draggableId)!=-1){
ui.draggable.removeClass(“ui状态权限”).addClass(“ui状态权限”);
}否则{
ui.draggable.removeClass(“ui状态正确”).addClass(“ui状态错误”);
}
}
});
var秒=60;
函数secondPassed(){
var分钟=数学轮((秒-30)/60),
剩余秒数=秒数%60;
如果(剩余秒数<10){
剩余秒数=“0”+剩余秒数;
}
document.getElementById('countdown')。innerHTML=minutes+“:”+remainingSeconds;
如果(秒==00){
清除间隔(倒计时);
document.getElementById('countdown').innerHTML=“0:00”;
如果(更正>=4){
$(“#successAlert”).show();
$(“#startAgainGameBtn”).show();
}否则{
$(“#resultBtn”).prop('disabled',true);
show();
$(“#getSol”).show();
}
}否则{
秒--;
}
}
var countdownTimer=setInterval('secondPassed()',1000);

试试这段代码,因为在代码中没有将变量传递到函数中,因此出现了未定义的错误。这样,变量就可以在函数中直接使用了。但是,这是未经测试的,因为没有任何html可供测试

$(document).ready(function() {

    var droppableId = $(this)[0].id;
    var draggableId = ui.draggable[0].id;

    window.show = function() {
        if (wordMap[droppableId].indexOf(draggableId) != -1) {
            ui.draggable.removeClass("ui-state-right").addClass("ui-state-right");
        } else {
            ui.draggable.removeClass("ui-state-right").addClass("ui-state-wrong");
        }
    }
});


var seconds = 60;

function secondPassed() {

    var minutes = Math.round((seconds - 30) / 60),
    remainingSeconds = seconds % 60;

    if (remainingSeconds < 10) {
        remainingSeconds = "0" + remainingSeconds;
    }

    document.getElementById('countdown').innerHTML = minutes + ":" + remainingSeconds;

    if (seconds == 00) {
        clearInterval(countdownTimer);
        document.getElementById('countdown').innerHTML = "0:00";

        if (corrects >= 4) {
            $("#successAlert").show();
            $("#startAgainGameBtn").show();
        } else {
            $("#resultBtn").prop('disabled', true);
            window.show();
            $("#getSol").show();
        }

    } else {
        seconds--;
    }
}


var countdownTimer = setInterval('secondPassed()', 1000);
$(文档).ready(函数(){
var droppableId=$(this)[0].id;
var draggableId=ui.draggable[0].id;
window.show=函数(){
if(wordMap[droppableId].indexOf(draggableId)!=-1){
ui.draggable.removeClass(“ui状态权限”).addClass(“ui状态权限”);
}否则{
ui.draggable.removeClass(“ui状态正确”).addClass(“ui状态错误”);
}
}
});
var秒=60;
函数secondPassed(){
var分钟=数学轮((秒-30)/60),
剩余秒数=秒数%60;
如果(剩余秒数<10){
剩余秒数=“0”+剩余秒数;
}
document.getElementById('countdown')。innerHTML=minutes+“:”+remainingSeconds;
如果(秒==00){
清除间隔(倒计时);
document.getElementById('countdown').innerHTML=“0:00”;
如果(更正>=4){
$(“#successAlert”).show();
$(“#startAgainGameBtn”).show();
}否则{
$(“#resultBtn”).prop('disabled',true);
window.show();
$(“#getSol”).show();
}
}否则{
秒--;
}
}
var countdownTimer=setInterval('secondPassed()',1000);

你也可以显示你的HTML吗?试着把
show()
设置为一个窗口变量,这样它就变成
window.show=function(){}
你就可以使用window.show引用它了。错误的原因是
wordMap[droppableId]
没有引用任何东西。你期望它是什么?我只是给可拖动的id分配了一个可拖放的id,所以如果它匹配的话,我会得到正确的,如果不是错误的话。如果我能得到任何相关的例子,那就太好了,所以我可以理解并感谢你的时间。实际上这是一个巨大的代码,我动态地创建了可拖动的元素,如果你想看到的话,我会在这里发布它
$(document).ready(function() {

    var droppableId = $(this)[0].id;
    var draggableId = ui.draggable[0].id;

    window.show = function() {
        if (wordMap[droppableId].indexOf(draggableId) != -1) {
            ui.draggable.removeClass("ui-state-right").addClass("ui-state-right");
        } else {
            ui.draggable.removeClass("ui-state-right").addClass("ui-state-wrong");
        }
    }
});


var seconds = 60;

function secondPassed() {

    var minutes = Math.round((seconds - 30) / 60),
    remainingSeconds = seconds % 60;

    if (remainingSeconds < 10) {
        remainingSeconds = "0" + remainingSeconds;
    }

    document.getElementById('countdown').innerHTML = minutes + ":" + remainingSeconds;

    if (seconds == 00) {
        clearInterval(countdownTimer);
        document.getElementById('countdown').innerHTML = "0:00";

        if (corrects >= 4) {
            $("#successAlert").show();
            $("#startAgainGameBtn").show();
        } else {
            $("#resultBtn").prop('disabled', true);
            window.show();
            $("#getSol").show();
        }

    } else {
        seconds--;
    }
}


var countdownTimer = setInterval('secondPassed()', 1000);