2015-06-16 38 views
-1

我们正在试图将下面的数组“问题”外化。我们试图将数组复制粘贴到一个名为“qList.js”的外部JavaScript文件中,我们尝试在标签中包含如下内容: <script src ="qList.js">。不幸的是,这是行不通的。有小费吗?外部化Javascript数组

与包含在HTML数组的代码如下(只是外部化前阵):

var pos = 0, test, test_status, question, choice, choices, chA, chB, chC, chD, correct = 0; 

var questions = [ 
    ["Question 1", "Choice1", "Choice2", "Choice3", "Choice4", "B"], 
    ["Question 2", "Choice1", "Choice2", "Choice3", "Choice4", "C"], 
    ["Quesiton 3", "Choice1", "Choice2", "Choice3", "Choice4", "A"] 
]; 
function _(x) { 
     return document.getElementById(x); 
     } 

function renderQuestion() { 
    test = _("test"); 
    if (pos >= questions.length) { 
     test.innerHTML = "<h2>You got "+correct+" of "+questions.length+" questions correct</h2>"; 
    _("test_status").innerHTML = "Test Completed"; 
    pos = 0; 
    correct = 0; 
    return false; 
    } 
    _("test_status").innerHTML = "Question " + (pos+1) + " of " + questions.length; 
    question = questions[pos][0]; 
    chA = questions[pos][1]; 
    chB = questions[pos][2]; 
    chC = questions[pos][3]; 
    chD = questions[pos][4]; 
    test.innerHTML = "<h3>"+question+"</h3>"; 
    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>"; 
    test.innerHTML += "<input type='radio' name = 'choices' value='D'> "+chD+"<br><br>"; 
    test.innerHTML += "<button onclick='checkAnswer()'>Submit</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][5]) { 
     correct++; 
    } 
     pos++; 
     renderQuestion(); 
    } 
     window.addEventListener("load", renderQuestion, false); 
    </script>  
+1

您还需要关闭''标签。但是由于你没有真正描述问题的原因,很难说这是否是唯一的问题(或者它是否是一个问题)。请详细说明“这行不通”。到目前为止,您已经做了什么来调试该问题? –

+1

你把那个标签放在哪里?请显示完整的html标记,包括两个脚本标记。 – Bergi

+0

关闭''似乎仍然在代码的底部。如果它实际上在文件中,则会中断。看看你的开发者控制台。 –

回答

0

,我认为你是在正确的轨道上。以下是如何做到这一点:

首先,创建一个文件qList.js,并给它的价值观和以前一样:

var questions = [ 
    ["Question 1", "Choice1", "Choice2", "Choice3", "Choice4", "B"], 
    ["Question 2", "Choice1", "Choice2", "Choice3", "Choice4", "C"], 
    ["Quesiton 3", "Choice1", "Choice2", "Choice3", "Choice4", "A"] 
]; 

现在,导入此文件到您的.html文件之前,你的JavaScript文件的其余部分,使用该行:

<script src="qList.js"></script>

你可能已经遇到了麻烦,是因为封闭的标记,或者您在使用它的实际代码下面有脚本标记。