我有由javascript和xml数据库编写的测验游戏,用于这样的排队:
<trivia>
<quiz>
<que>Aluminum</que>
<ca>Al</ca>
<ia>Am</ia>
<ia>A</ia>
<ia>Au</ia>
<uinfo>Aluminum is available becouse petrole cheap.</uinfo>
<diff>1</diff><rank>0</rank></quiz>
</trivia>
和游戏中的这段代码:
// adds in quizzes each 'quiz' element with question (<que>), correct answer(<ca>), and incorrect answers(<ia>)
quizzes[i]['que'] = arr_quiz[i].getElementsByTagName('que')[0].childNodes[0].nodeValue; // question
quizzes[i]['ca'] = arr_quiz[i].getElementsByTagName('ca')[0].childNodes[0].nodeValue; // correct answer
quizzes[i]['uinfo'] = arr_quiz[i].getElementsByTagName('uinfo')[0].childNodes[0].nodeValue; // useful info
测验游戏使用2选项(样式):序列问题或随机问题。
序列问题很好,但是当我选择(随机问题)时,测验游戏不起作用,如果:
xml文件中的问题总数超过204个问题。
或者如果代码中的第3行可用(不是由“//”停止)。当我通过//停止这第3行时:
//quizzes[i]['uinfo'] = arr_quiz[i].getElementsByTagName('uinfo')[0].childNodes[0].nodeValue; // useful info
游戏工作无限问题?!
请问有什么问题?
文件中的某些记录缺少uinfo
标记,因此当您尝试访问此属性时会出现错误。您需要检查它是否存在。
let uinfo = arr_quiz[i].getElementsByTagName('uinfo');
quizzes[i].uinfo = uinfo ? uinfo[0].childNodes[0].nodeValue : '';