我一直在尝试使用 Ajax 构建一个问答应用程序。我需要帮助创建一个特定的功能。我创建了包含不同问题和答案的 XML 文件。基本思想是使用“get”函数(1)加载一个 XML 问题文件,(2)使用“display”和“math.random”函数显示一个随机的“question”元素(对应的“answer”元素将同时显示,但被 Javascript 隐藏。)这是我正在使用的 XML 文件的格式。这些节点由父节点 Words..
<WordQuestions>
<Question>Question1</Question>
<Answer>Answer1</Answer>
</WordQuestions>
<WordQuestions>
<Question>Question2</Question>
<Answer>Answer2</Answer>
</WordQuestions>
我需要创建一个函数,该函数可以从 XML 文件中随机选择一个问答元素,将其显示给用户,但不会在用户后续点击时再次显示。因此,一旦向用户显示问题,就需要将其从问题列表中删除,以便在下次单击时向用户显示。有人知道怎么做这个吗?
我创建了一个类似魅力的功能,但它的局限性在于它过于随机 - 可能永远不会选择问题和答案元素来向用户显示,或者它可能被选择的次数不成比例。用户需要练习所有的问题。这是此功能的精简版。
<script language = "javascript">
function getCategory()
{
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
XMLHttpRequestObject.overrideMimeType("text/xml");
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new
ActiveXObject("Microsoft.XMLHTTP");
}
if(XMLHttpRequestObject) {
var P = document.LoadCategory.Load.value;
if (P == "Category1") {XMLHttpRequestObject.open("GET", "Catgory1.xml", true)}
if (P == "Category2") {XMLHttpRequestObject.open("GET", "Category2.xml", true)}
if (P == "Category3") {XMLHttpRequestObject.open("GET", "Category3.xml", true)}
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) {
var xmlDocument = XMLHttpRequestObject.responseXML;
displayCategory(xmlDocument);
}
}
XMLHttpRequestObject.send(null);
}
}
function displayCategory (xmldoc)
{
Questionnodes = xmldoc.getElementsByTagName("Question");
Answernodes = xmldoc.getElementsByTagName("Answer");
var i = Math.floor((Math.random()*1000)%Questionnodes.length);
var i = Math.floor((Math.random()*1000)%Answernodes.length);
var displayText1 =
Questionnodes[i].firstChild.nodeValue;
var target = document.getElementById("targetDiv1");
target.innerHTML=displayText1;
var displayText2 =
Answernodes[i].firstChild.nodeValue;
var target = document.getElementById("targetDiv2");
target.innerHTML=displayText2;
}
</script>
现在,我不知道我是否能够更改此代码以获得我想要的功能。我曾尝试将 XML 文件解析为 javascript 数组(然后随机选择并删除一个元素),但 atm 无处可去。如果有人有一些建议,我将不胜感激。再一次,我想要一个函数,它可以从 XML 文件中随机选择一个问答元素,但只向用户显示一次。干杯,伙计们。(对不起,这太啰嗦了)。