用 E4X 和 Prototype 创建 Ajax mindreader 应用程序,第 2 部分: 使 mindreader 应用程序更智能化
2010-03-09 00:00:00 来源:WEB开发网最后,选择知识库中的所有目标元素,过滤出与 currentGuessId 对应的目标,并在其中添加新的答案元素。这样就更新了现有目标。
现在需要创建新目标。这个新目标元素应该包含应用于它的所有以前的答案,所以最简便的方法是复制原来的目标,见清单 8。
清单 8. 创建新目标
...
knowledgeBase..target.(@id==currentGuessId).appendChild(oldTargetNewAnswer);
var oldTargetElement = new XML();
oldTargetElement = knowledgeBase..target.(@id==currentGuessId);
//Clone old target
var newTargetElement = oldTargetElement.copy();
newTargetElement.@id = nextTargetId;
nextTargetId++;
newTargetElement.display = newTarget;
var newAnswerElement = newTargetElement.answer.(@questionid == thisQuestionId);
newAnswerElement["answerValue"+thisQuestionId] = newAnswer;
knowledgeBase.targets.appendChild(newTargetElement);
hide_form("answerFormDiv");
start_over();
}
首先,获得原来的目标元素的引用。然后,使用 copy() 方法创建这个元素的拷贝。在此之后,需要把 ID 和 display 重新设置为新的值。最后,需要把最近的答案元素的值改为新的值。
现在,可以把新元素添加到知识库中。
现在,可以用 start_over() 从头开始游戏。除非删除了 alert() 语句,否则在选择 “Animal” 之后就可以看到新的问题和目标,见图 3。
编缉推荐阅读以下文章
- 用 E4X 和 Prototype 创建 Ajax mindreader 应用程序,第 1 部分: 构建 Twenty Questions 基础结构
更多精彩
赞助商链接