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

时间:2015-05-27 14:58:13

标签: javascript html

我在编程中遇到了一个新问题。我正在尝试创建一个测验,我在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();
}

当我查看控制台时,下一行似乎有问题,但我无法弄清楚如何修复它。当我按下提交答案按钮时,我收到错误消息。

test.innerHTML += "<button onclick='checkAnswer()'>Submit Answer</button>";

提前致谢!

这是我小提琴的链接:Redis

我得到的错误消息是index.html第1行上的“checkAnswer未定义”。

1 个答案:

答案 0 :(得分:0)

您必须初始化您的功能。在普通javascript中执行此操作的最简单方法是在您的正文结束标记之前向底部的html文件中添加一个init函数。

<body>

  
  <button onclick="doSomething()">click me</button>
  
  <script>
    (function() {
      init();
    })();
  </script>

</body>
public class Requirement
{
    public RequirementType Type { get; set; }

    private object _value;
    public object Value 
    { 
        get { return _value; }
        set
        {
            if (Type == RequirementType.OS && 
                value.GetType() == typeof(OSType))
            {
                _value = value;
            }
            else 
            {
                throw new Exception("Value type is incorrect for Type provided");
            }
        }
    }  
}