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 配列にしようとしましたが (要素をランダムに選択して削除しました)、どこにもアクセスできませんでした。誰かにいくつかの提案があれば、私はとても感謝しています. 繰り返しになりますが、XML ファイルから質問と回答の要素をランダムに選択できる関数が必要ですが、ユーザーには 1 回しか表示されません。乾杯。(すみません、これはとても長々としたものでした)。