2012-04-19 1 views
0

こんにちは、私はHTML5とjのクエリで初心者です。私は成功したXMLからデータを解析する必要があります。データを解析した後、jクエリを使用してランダムに表示したいと考えています。どうすればよいか教えてください。jmlとhtml5を使用してxmlの表示データをランダムに解析した後

コードスニペットがある

// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    }else { 
     // code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET","xml/multiquestions1.xml",false); 
    xmlhttp.send(); 
    xmlDoc=xmlhttp.responseXML;  

    var x=xmlDoc.getElementsByTagName("question"); 
    $(document).ready(function(){ 
     for(var j=0;j<x.length;j++) 
     { 
      if(j==0) 
      { 
       $("#navigationlist").append('<li><a href="#" id="selected_link" class="navg" onClick="display_nav('+j+',this);">'+(j+1)+'</a></li>'); 
       display_nav(j,$("#selected_link")) 
      } 
      else 
       $("#navigationlist").append('<li><a href="#" class="navg" onClick="display_nav('+j+',this);">'+(j+1)+'</a></li>'); 
     }    
    }); 

function display() 
    { 
     // for fetch question 
     Description=(x[i].getElementsByTagName("questionTxt")[0].childNodes[0].nodeValue); 
     Answer =(x[j].getElementsByTagName("image")[0].childNodes[0].nodeValue); 

     document.getElementById('options').style.backgroundImage = 'url('+Answer+')'; 

     // Assign the value 
     document.getElementById("question").innerHTML= Description; 

    } 

function display_nav(j,obj) 
    { 
     i=j; 
     $("#feedback").html(""); 
     $(".navg").each(function(){ 

      $(this).removeAttr("id");       
     }); 

     $(obj).attr("id","selected_link"); 
     Description=(x[j].getElementsByTagName("questionTxt")[0].childNodes[0].nodeValue); 
     Answer =(x[j].getElementsByTagName("image")[0].childNodes[0].nodeValue); 
     answermin=(x[j].getElementsByTagName("answermin")[0].childNodes[0].nodeValue); 
     answermax=(x[j].getElementsByTagName("answermax")[0].childNodes[0].nodeValue); 

     $("#bob").attr("min",answermin); 
     $("#bob").attr("max",answermax); 
     $("#bob").attr("value",0); 
     $("#out").html(0); 
     $("#out").css({left:0}); 

     // Assign the value 
     document.getElementById("question").innerHTML= Description; 
     //document.getElementById("options").style.backgroundImage = url(Answer); 
     document.getElementById('options').style.backgroundImage = 'url('+Answer+')';  
    } 

and xml is 

<?xml version="1.0" encoding="utf-8"?> 
<FlashCards> 
    <question id="1"> 
    <questionTxt type="text"><![CDATA[Hello!]]></questionTxt> 
<image visible="true"><![CDATA[img/smiley1.png]]></image> 
    </question> 
<question id="2"> 
    <questionTxt type="text"><![CDATA[Hi]]></questionTxt> 
<image visible="true"><![CDATA[img/smiley2.png]]></image> 

</question> 
</FlashCards> 
+0

jqueryを使用しているので、すべてで使用する必要があります。 'getElementsByTagName、getElementById'と同様に、' xmlhttp'の部分全体は必要ありません。それはあなたに多くのタイピングと痛みを節約します。 –

+0

did not get :(。どこで変更を行うべきですか? – Naina

+1

1.最初のリクエストは、単純に '$ .get()'、 'getElementsByTagName'を置き換えることができます2.投稿したコードはかなり複雑に見えますが、多くの人が掘り起こしたいとは思っていません(例えば、$( 'tagName') 'によって' $( 'idName') 'によって' getElementById'によって)。あなたは本当に必要なものに減らすべきですまた、i、j、s、xのような変数はそれほど有用ではありません。 –

答えて

0

jQueryのは、独自の解析関数が付属していますjQuery.parseXML() - >parseXML

は、その後、あなたがより簡単に解析されたXMLの岩下検索を行うことができます。

var xml = $.parseXML(xmlString), 
    // find and count all questions 
    questionCount = xml.find('question').length(); 
// find a random question out of the pool 
xml.find('question#'+ Math.floor(Math.random() * (questionCount + 1))): 

私はそれをテストしませんでしたが、私はあなたがポイントを得ることを望みます。