Javascript 当我在HTML文件中编写脚本时,它可以工作;当我将相同的代码放入js文件并链接它时,它不工作?

Javascript 当我在HTML文件中编写脚本时,它可以工作;当我将相同的代码放入js文件并链接它时,它不工作?,javascript,html,Javascript,Html,我在编程方面遇到了一个新问题。我正在尝试创建一个测验,我已经在html文件中编写了一个脚本,它工作得非常好。但是,我希望将脚本与html文件分开,因此我将脚本代码放入js文档并将其链接到索引文件。从我以前的经验来看,当我这样做的时候,它总是有效的,不需要改变任何东西。但是,现在我收到一条错误消息,说没有定义函数checkAnswer!?即使它写在js文档中。下面是一些代码 function _(x) { return document.getElementById(x); }

我在编程方面遇到了一个新问题。我正在尝试创建一个测验,我已经在html文件中编写了一个脚本,它工作得非常好。但是,我希望将脚本与html文件分开,因此我将脚本代码放入js文档并将其链接到索引文件。从我以前的经验来看,当我这样做的时候,它总是有效的,不需要改变任何东西。但是,现在我收到一条错误消息,说没有定义函数checkAnswer!?即使它写在js文档中。下面是一些代码

function _(x) {
    return document.getElementById(x);
    }

function renderQuestion() {
    test = _("test1");

    if(pos >= questions.length){
test.innerHTML = "<h2>You got "+correct+" of "+questions.length+" questions correct</h2>";
_("testStatus").innerHTML = "Test Completed";
pos = 0;
correct = 0;
return false;
}
    _("testStatus").innerHTML = "Question " + (pos + 1)+ "of " + questions.length;
    question = questions[pos][0];
    chA = questions[pos][1];
    chB = questions[pos][2];
    chC = questions[pos][3];
    test.innerHTML = question + "<br>";
    test.innerHTML += "<input type='radio' name='choices' value='A'> "+chA+"<br>";
    test.innerHTML += "<input type='radio' name='choices' value='B'> "+chB+"<br>";
    test.innerHTML += "<input type='radio' name='choices' value='C'> "+chC+"<br><br>";
    test.innerHTML += "<button onclick='checkAnswer()'>Submit Answer</button>";
    }

    function checkAnswer() {
    choices = document.getElementsByName("choices");
for(var i=0; i<choices.length; i++){
if(choices[i].checked){
choice = choices[i].value;
}
}
if(choice == questions[pos][4]){
correct++;
}
pos++;
renderQuestion();
}
函数(x){
返回文档.getElementById(x);
}
函数renderQuestion(){
测试=uu(“测试1”);
如果(位置>=问题长度){
test.innerHTML=“你得到了“+问题中的“+正确的+”。长度+“问题正确”;
_(“testStatus”).innerHTML=“测试完成”;
pos=0;
正确=0;
返回false;
}
_(“testStatus”).innerHTML=“问题”+(pos+1)+”的“+questions.length;
问题=问题[pos][0];
chA=问题[pos][1];
chB=问题[pos][2];
chC=问题[pos][3];
test.innerHTML=问题+“
”; test.innerHTML+=“+chA+”
”; test.innerHTML+=“”+chB+“
”; test.innerHTML+=“”+chC+“

”; test.innerHTML+=“提交答案”; } 函数checkAnswer(){ 选项=document.getElementsByName(“选项”);
对于(var i=0;i你必须初始化你的函数。在纯javascript中,最简单的方法是在你的html文件底部,在你的body closing标记之前添加一个init函数

init=function(){
doSomething();
};
doSomething=函数(){
控制台日志(“是”);
}

点击我
(功能(){
init();
})();

您是否检查了开发人员工具中的“网络”选项卡以查看文件是否首先加载?如果加载正确但错误仍然存在,请发布用于包含js文件的HTML。此外,请发布您收到的错误消息。可能是路径问题。我已上传了指向JSFIDLE的链接并包含错误消息当我运行代码时,我得到了一个答案:谢谢!但是你改变了什么?我没有注意到代码中有任何不同!
test.innerHTML += "<button onclick='checkAnswer()'>Submit Answer</button>";