--- title: 笑话生成器 slug: Learn/JavaScript/First_steps/Silly_story_generator tags: - JavaScript - 初学者 - 变量 - 字符串 - 学习 - 操作符 - 数字 - 数组 - 测试 - 脚本代码 - 课程设计 translation_of: Learn/JavaScript/First_steps/Silly_story_generator ---
{{LearnSidebar}}
{{PreviousMenu("Learn/JavaScript/First_steps/Arrays", "Learn/JavaScript/First_steps")}}

本节是一个小测验,要求你运用所学知识制作一个笑话生成器。祝玩的愉快!

预备知识: 请读完本章所有小节的内容后再开始这个测验。
目标: 测试你对变量、数字、操作符、字符串和数组等 Javascript 基本概念的理解程度。

起点

测验开始之前需要下载并保存 index.htmlstyle.cssraw-text.txt

注: 你还可以用类似 JSBin 或 Thimble 这些在线编辑器来完成测验。你可以把 HTML、CSS 及 JavaScript 代码复制过去。如果你选的工具没有独立的 JavaScript 版面,可以随时在 HTML 页面中添加 <script> 元素。

项目简介

我们提供了一些原始的 HTML / CSS,以及若干字符串和 JavaScript 函数,还需要你来编写一些 JavaScript 代码让项目运行起来:

可以尝试操作一下:(别偷看源代码哦!)

{{ EmbedLiveSample('Silly_story_generator', '100%', 350, "", "", "hide-codepen-jsfiddle") }}

译注: 点击在线试用 汉化版本。有兴趣还可以在本节结束后回来 看看代码。(没兴趣就跳过吧 :)

步骤

以下是你的工作。

初始化变量和函数:

  1. 将刚下载的文本文件中的“1. 定义变量和函数”标题项下所有代码复制粘贴至 main.js 中。此时你就有了三个变量(customName 是对“输入自定义的名字”文本框的引用,randomize 是对“随机生成笑话”按钮的引用,story 是对 HTML 底部的、准备存放笑话的 {{htmlelement("p")}} 元素的引用)和一个函数(randomValueFromArray() 取一个数组作参数,随机返回数组中的一个元素)。
  2. 然后是文本文件的第二节——“2. 纯文本字符串”。这里包含了一些字符串,这些字符串是项目的输入信息。你应该在 main.js 文件中用变量来保存它们。
    1. storyText 变量保存第一个长字符串,“今天气温……”。
    2. insertX 数组保存第一组三个字符串,“怪兽威利……”。
    3. insertY 数组保存第二组三个字符串。“肯德基……”。
    4. insertZ 数组保存第三组三个字符串。“自燃了……”。

放置事件处理器并补全:

  1. 返回刚才的文本文件。
  2. 将“3. 事件监听器和未完成的函数定义”标题项下的代码复制粘贴至 main.js 文件。这将:

补全 result() 函数:

  1. newStory 的值设置为 storyText。声明新变量有必要的,只有这样才能在每次按下按钮后、在函数运行时生成一个新的随机笑话。如果直接操作 storyText 则只能生成一次新故事
  2. xItemyItem 和 zItem 分别设置为 randomValueFromArray(insertX)randomValueFromArray(insertY)randomValueFromArray(insertZ)
  3. 接下来将 newStory 中的占位符(:inserta::insertb::insertc: )替换为 xItemyItem 和 zItem。有专用的字符串方法可供使用,并用该方法的返回值为 newStory 赋值。每当按下按钮时,这些占位符都会替换为随机的笑话字符串。再给你一点提示,我们所说的这种方法每次只会将所找到的首个子字符串进行替换,因此该方法对某个占位符需要执行两次。
  4. 在第一个 if 块中再次调用这个字符串替换方法,以使 newStory 字符串中的名字“李雷”替换为变量 name 的值 。这里我们说:“如果 customName 中有值,就把故事里的 “李雷”替换成它。” 如果是汉化版将newStory中的“李雷”替换成 name 的值;
  5. 在第二个 if 块中检查 american 单选按钮是否被选中。如果选中,就要将故事中的重量和温度值从公斤和摄氏度转换为磅和华氏度,具体事项如下:
    1. 确定英美单位的转换公式。
    2. 定义变量 weighttemperature 的行中,分别将美制单位按公式转化为英制,用 Math.round() 对计算结果取整。然后将英式单位连接到末尾。
    3. 就在上述两个变量的定义下方增加两个字符串置换操作,将“35 摄氏度”替换为 temperature 的值,将“140 公斤”替换为 weight 的值。
  6. 最后,在函数倒数第二行,将 story.textContent(程序中显示笑话结果的段落) 赋值为 newStory

提示

测验

如果你是在课堂上进行这个测验,你可以把作品交给导师或教授去打分了。如果你是在自学,也可以在 本节测验的讨论页 或者 Mozilla 聊天室 #mdn 频道取得帮助。要自己先尝试,作弊是不会有收获的!

{{PreviousMenu("Learn/JavaScript/First_steps/Arrays", "Learn/JavaScript/First_steps")}}

本章目录