作者Ake (AKE)
看板Flash
标题Re: flash&xml,可以帮我看一下程式码吗
时间Sun Nov 2 23:48:27 2003
※ 引述《sshain (飞飞)》之铭言:
: 不知为什麽跑不出来
: doc=new XML();
: doc.load("Homework1.xml");
: doc.ignoreWhite=true
: doc.onLoad=linkdata_onLoad;
: stop();
: function linkdata_onLoad (success){
: if (success)
: {
: e=this.childNodes;
^^^^^^^^^^^^^^^^^
e=this.childNodes[0] // = firstChild
: trace(e);
: e1=e[0].childNodes;
^^^^^^^^^^^^^^^^^^
e1=e.childNodes[0]//
: e11=e1[0].childNodes;
: title=e11[0].firstChild.nodeValue;
: ﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
: 这行不知为啥跑不出来
: 就是要显示Homewrok1的这个
: <内容>下列哪一项正确</内容>
: option1.content=e11[1].firstChild.nodeValue;
: option2.content=e11[3].firstChild.nodeValue;
: option3.content=e11[5].firstChild.nodeValue;
: }
: };
: option1.onRollOver=function () {
: gotoAndStop(2);
: };
: option1.onRollOut=function () {
: gotoAndPlay(1);
: };
: option2.onRollOver=function () {
: gotoAndStop(2);
: };
: option2.onRollOut=function () {
: gotoAndPlay(1);
: };
: option3.onRollOver=function () {
: gotoAndStop(2);
: };
: Homework1的程式码
: <?xml version="1.0" encoding="UTF-8" ?>
: <content>
: <题目>
: <内容>下列哪一项正确</内容>
: <选项1>(1)3-1=2</选项1>
: <答案>right</答案>
: <选项2>(2)1-1=1</选项2>
: <答案>wrong</答案>
: <选项3>(3)2-1=2</选项3>
: <答案>wrong</答案>
: </题目>
: </conten>
^^ 好像少了一个 t
: 麻烦各位看一下好吗<(_ _)>谢谢
其实啊,
你的问题最主要是那个 igorneWrite 不知是不是真的是你想像中的作用,
node之间的换行已经是一个child了,
另外那个 <? xml .... ?>也算是 node.
所以你的childNodes的位置会估算错误,
如果你用这一段看看 :
for (var i=0; i<=e.childNodes.length; i++){
trace("e.childNodes["+i+"]="+e.childNodes[i])
}
就会看得一清二楚,
告诉你如果我做会怎样做,
第一, nodeName 我应该不会取中文,
第二, 我把格式这样定: (按照你的取名法)
<问题 num="1">
<内容>YYYYYYYYYYY</内容>
<选项 num="1" ans="right">XXXXXXX</选项>
<选项 num="2" ans="wrong">XXXXXXX</选项>
<选项 num="3" ans="wrong">XXXXXXX</选项>
</问题>
<问题 num="2">
<内容>YYYYYYYYYYY</内容>
<选项 num="1" ans="right">XXXXXXX</选项>
<选项 num="2" ans="wrong">XXXXXXX</选项>
<选项 num="3" ans="wrong">XXXXXXX</选项>
<选项 num="4" ans="wrong">XXXXXXX</选项>
</问题>
看得出选项改成这样的好处吧, 就是不一定是只三个选项,
不过, 如果attribute用中文的话, flash应该读不出来...
第三, 我会采取"认标纤"的策略,
就是
for(var n=0; n<=X.childNodes.length; n++){
if(X.childNodes[n].nodeName=="问题"){
myBuildQuestion(X.childNodes[n])
}
}
function myBuildQuestion(obj){
for(var n=0; n<=obj.childNodes.length; n++){
if(obj.childNodes[n].nodeName=="内容"){
myBuildContent(obj.childNodes[n])
} else if(obj.childNodes[n].nodeName=="选项"){
myBuilChoice(obj.childNodes[n])
}
}
}
function myBuildChoice(obj){
//建立选项
}
function myBuildContent(obj){
// 建立内容
}
这样的好处是, 可以弹性的处理我想要和不想要的资讯,
只处理我认得的东西, 然後再call不同的function来处理,
另外, 这样的话, xml档可以换行, ^o^
如果用这种 e.firstChild.ChildNodes[3].ChildNodes[2]
这种方法来写的话, 是可以, 不过写得有点硬....
以後在 .xml 某个地方插一句的话,
那些第几个child都要重算了,
好! 我已经把我不少的经验告诉你了,
祝你愉快的完成!
--
我是一杯心酸的果汁...
果汁内悬浮着很多伤心的粒子...
我正需要一支搅拌匙不断的把我搅拌...
免得粒子在宁静中沉淀成块......。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.85.48.159
1F:→ sshain:感谢<(_ _)> 推 163.13.177.98 11/12