WEB开发网
开发学院网页设计JavaScript 用 E4X 和 Prototype 创建 Ajax mindreader 应用程... 阅读

用 E4X 和 Prototype 创建 Ajax mindreader 应用程序,第 1 部分: 构建 Twenty Questions 基础结构

 2010-03-09 00:00:00 来源:WEB开发网   
核心提示: 注意,在这个清单的顶部,用 E4X 和 Prototype 创建 Ajax mindreader 应用程序,第 1 部分: 构建 Twenty Questions 基础结构(10),创建了一个新对象 currentTargetSet,它最初包含整个 targets 元素,这样就很容易排除已经问过

注意,在这个清单的顶部,创建了一个新对象 currentTargetSet,它最初包含整个 targets 元素。但是,在 answer_question() 中,将删减其中的内容。

获得用户给出的答案之后(注意,这个函数的参数是实际的 span),可以对 currentTargetSet 进行过滤,创建一个新的 XMLList remainingTargets。

注意,这个表达式中使用了两个连续的点号。XPath 使用双斜线(//)表示后代,而 E4X 使用两个连续的点号(..)。在这里,首先获得根元素的所有 target 子元素,然后对它们进行过滤。

我们来仔细看看这个过滤器。在看到方括号时,您可能会想到 XPath 谓词,但这并不是 XPath 谓词。实际上,answer 变量是散列。这种方式与从 JavaScript 引用表单元素的传统方式相似,表达式 answer["answerValue1"] 相当于 answer.answerValue1。

这种形式的优点是,可以动态地指定要搜索的元素。在这个示例中,过滤器寻找 target 元素的条件是,元素的 answer.answerValue1 后代元素的值与用户给出的答案匹配。

与前面一样,过滤过程会产生一个 XMLList,然后可以检查这个列表的长度,从而判断目前还留下多少个目标。例如,如果用户选择 “Animal”,那么会留下两个目标,见图 5。

图 5. 留下两个目标
用 E4X 和 Prototype 创建 Ajax mindreader 应用程序,第 1 部分: 构建 Twenty Questions 基础结构

留下两个目标之后,需要找出下一个要问的问题,从而区分这两个目标。

选择下一个要问的问题

根据算法,下一个问题应该是与剩余目标最相关的问题,所以必须做一个假设。在生产系统中,可能会存储问过的每个问题,或者以其他方式确保排除以前问过的问题。在这个示例中,假设随着时间的推移以及知识库包含更多东西,问题的针对性会越来越强。我假设在游戏进行过程中,questionid 值逐渐增大,这样就很容易排除已经问过的问题,见清单 9。

编缉推荐阅读以下文章

  • 用 E4X 和 Prototype 创建 Ajax mindreader 应用程序,第 2 部分: 使 mindreader 应用程序更智能化

上一页  5 6 7 8 9 10 

Tags:EX Prototype 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接