我有一个用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个问题。
或代码中的第三行可用(不被“ //”停止)。当我通过//停止第三行时:
//quizzes[i]['uinfo'] = arr_quiz[i].getElementsByTagName('uinfo')[0].childNodes[0].nodeValue; // useful info
游戏可以使用不限字符吗?!
请问是什么问题?
答案 0 :(得分:1)
文件中的某些记录缺少uinfo
标记,因此在尝试访问此属性时会出现错误。您需要检查它是否存在。
let uinfo = arr_quiz[i].getElementsByTagName('uinfo');
quizzes[i].uinfo = uinfo ? uinfo[0].childNodes[0].nodeValue : '';