【JavaScript】笑话生成器

news/2024/10/17 14:12:55/

根据MDN网站学习记录笔记

笑话生成器

  • 一、项目目标
  • 二、项目流程
  • 三、效果展示
  • 四、总结
    • 4.1 向html中添加JavaScript的方法
    • 4.2 变量
    • 4.3 有用的字符串方法
      • indexOf()
      • slice()
      • toLowerCase()和toUpperCase()
      • replace()
    • 4.4 有用的数组方法
      • split()
      • push() 和 pop()


一、项目目标

主要针对js部分进行设计,html和css部分遵照MDN给出的示例未作改动

  • 点击“随机生成笑话”按钮时生成一则笑话。
  • 若“生成”按钮按下之前,你在“输入自定义的名字”文字框中输入了一个自定义名字,那么生成的笑话中原有的名字(李雷 / Bob)将被取代。
  • 通过选择国家名称的单选按钮来确定界面语言以及笑话中温度和重量的制式。
  • 点一次按钮,生成一个新故事。点一次生成一个……

二、项目流程

  1. 初始化变量和函数
  • customName 是对“输入自定义的名字”文本框的引用,randomize 是对“随机生成笑话”按钮的引用,story 是对 HTML 底部的、准备存放笑话的 <p> 元素的引用);函数randomValueFromArray() ,取一个数组作参数,随机返回数组中的一个元素
const customName = document.getElementById('customname');
const randomize = document.querySelector('.randomize');
const story = document.querySelector('.story');function randomValueFromArray(array) {return array[Math.floor(Math.random() * array.length)];
}
  • 用合适的变量来保存文本字符串
let storyText = '今天气温 34 摄氏度,:inserta:出去遛弯。当走到:insertb:门前时,突然就:insertc:。人们都惊呆了,李雷全程目睹但并没有慌,因为:inserta:是一个 130 公斤的胖子,天气又辣么热.';
let insertX = ['怪兽威利','大老爹','圣诞老人'];
let insertY = ['肯德基','迪士尼乐园','白宫'];
let insertZ = ['自燃了','在人行道化成了一坨泥','变成一条鼻涕虫爬走了'];

其中:inserta:是占位符

  1. 放置事件处理器并补全result()函数
// 事件监听器
randomize.addEventListener('click', result);function result() {let newStory = storyText;
// 随机返回数组中的元素let xItem = randomValueFromArray(insertX);let yItem = randomValueFromArray(insertY);let zItem = randomValueFromArray(insertZ);
//  用正则匹配,用随机元素替换掉占位符 newStory = newStory.replace(/:inserta:/, xItem);newStory = newStory.replace(/:inserta:/, xItem);newStory = newStory.replace(/:insertb:/, zItem);newStory = newStory.replace(/:insertc:/, yItem);
// 如果customName中有值就替换掉默认的李雷if(customName.value !== '') {let name = customName.value;newStory = newStory.replace('李雷', name);}
// american若被选中,进行单位转换然后替换文本if(document.getElementById("american").checked) {let weight = Math.round(140 * 2.20462) + '磅';let temperature = Math.round(35 * 9/5 + 32) + '华氏度';newStory = newStory.replace('34 摄氏度',temperature);newStory = newStory.replace('130 公斤',weight);}
//   将 story.textContent(程序中显示笑话结果的段落) 赋值为 newStory。story.textContent = newStory;story.style.visibility = 'visible';
}

三、效果展示

在这里插入图片描述
在这里插入图片描述

四、总结

4.1 向html中添加JavaScript的方法

HTML 元素是按其在页面中出现的次序调用的,如果用 JavaScript 来管理页面上的元素(更精确的说法是使用文档对象模型 DOM),若 JavaScript 加载于欲操作的 HTML 元素之前,则代码将出错。

  1. 内部: 在 </head> 标签结束前插入以下代码
<script>// 在此编写 JavaScript 代码</script>

内部示例用事件监听器避免js加载于HTML渲染完成前

document.addEventListener("DOMContentLoaded", function() {. . .
});
  1. 外部:
<script src="script.js" async></script>

外部示例用async“异步”属性或者defer避免js加载于HTML渲染完成前。

  • async : 浏览器遇到 async 脚本时不会阻塞页面渲染,而是直接下载然后运行。脚本的运行次序就无法控制。
  • defer : 脚本将按照在页面中出现的顺序加载和运行。
<script defer src="js/vendor/jquery.js"></script>
<script defer src="js/script2.js"></script>
<script defer src="js/script3.js"></script>

4.2 变量

  1. 注意要声明变量:用var或者let,但最好用let
  2. 注意变量的命名规则:不要用下划线和数字开头,避免用保留字给变量命名。
  3. 数字与字符的转换:
  • Number()可以把传递给它的任何东西转换成一个数字。
  • 每个数字都有一个名为 toString() 的方法,它将把它转换成等价的字符串。
let myString = '123';
let myNum = Number(myString);
typeof myNum;
let myNum = 123;
let myString = myNum.toString();
typeof myString;

4.3 有用的字符串方法

indexOf()

在字符串中查找子字符串并提取,可以用来过滤字符串。

browserType.indexOf('zilla'); //2
browserType.indexOf('vanilla'); //-1

第一行结果是2,因为子字符串“zilla”从“mozilla”内的位置2开始。
第二行得到 -1 的结果 :当在主字符串中找不到子字符串时将返回 -1。

slice()

slice()可以用来提取字符串中的子字符串,在已知开始的位置和想要结束的字符时。

browserType.slice(0,3);
browserType.slice(2);

第一行返回:“moz”;
第二行返回“zilla”,因为没有包含第二个参数,所以返回的子字符串是字符串中的所有剩余字符。

toLowerCase()和toUpperCase()

实现大小写转换

let radData = 'My NaMe Is MuD';
radData.toLowerCase();
radData.toUpperCase();

replace()

替换字符串中的某部分,需要两个参数 - 要被替换下的字符串和要被替换上的字符串。

browserType = browserType.replace('moz','van');

4.4 有用的数组方法

split()

实现字符串和数组之间的转换。需要一个参数-要将字符串分隔的字符,并返回分隔符之间的子串,作为数组中的项。

let myData = 'Manchester,London,Liverpool,Birmingham,Leeds,Carlisle';
let myArray = myData.split(',');
myArray = ['Manchester', 'London', 'Liverpool', 'Birmingham', 'Leeds', 'Carlisle']
  • join()方法将数组变成字符串
let myNewString = myArray.join(',');
myNewString = 'Manchester,London,Liverpool,Birmingham,Leeds,Carlisle';
  • 数组转换为字符串的另一种方法是使用 toString() 方法
let dogNames = ["Rocket","Flash","Bella","Slugger"];
dogNames.toString(); //Rocket,Flash,Bella,Slugger

push() 和 pop()

添加和删除数组元素。

  • push()你需要添加一个或多个要添加到数组末尾的元素
  • 从数组中删除最后一个元素的话直接使用 pop()
var newLength = myArray.push('Bristol');
myArray.pop();
  • unshift()shift() 从功能上与 push()pop() 完全相同。只是它们分别作用于数组的开始,而不是结尾。
myArray.unshift('Edinburgh');
let removedItem = myArray.shift();

http://www.ppmy.cn/news/149499.html

相关文章

程序员笑话收集

程序员笑话 均系从网上收集, 聊作程序员自己的调侃 Table of Contents 1 自行车 2 火车 3 问路 4 警告 5 山路 6 程序员的愿望 7 高效的程序员 8 开发时间 9 招聘 10 程序员的未来 11 面试Java 12 程序员vs妓女 13 电信局的程序员 14 问答 15 刹车失灵 16 编程语言 17 敲门 18…

程序员笑话集锦

程序员笑话集锦 1. 大家喝的是啤酒&#xff0c;这时你入座了。 你给自己倒了杯可乐&#xff0c;这叫低配置。 你给自已倒了杯啤酒&#xff0c;这叫标准配置。 你给自己倒了杯茶水&#xff0c;这茶的颜色还跟啤酒一样&#xff0c;这叫木马。 你给…

RHCE 作业三

1.基于域名访问网站 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# systemctl disable firewalld [rootserver ~]# yum install httpd -y [rootserver ~]# systemctl start httpd [rootserver ~]# syst…

笑话集锦

1.有一天小明手上打着石膏&#xff0c; 老师问&#xff1a;你的手怎么了 小明说&#xff1a;断掉了 老师说&#xff1a;为什么&#xff1f; 小明说&#xff1a;因为我太懒了 老师说&#xff1a;太懒手会断&#xff1f; 小明说&#xff1a;我走在路上&#xff0c;鞋子跑进一颗石…

python爬虫- 爬取幽默笑话网站,带你一起笑翻天

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者&#xff1a;python学习教程 ( 想要学习Python&#xff1f;Python学习交流群&#xff1a;1039649593&#xff0c;满足你的需求…

初学爬虫之试---爬取51笑话网站(源代码)

爬取点笑话图片没事的时候躲在被子里看看吧 做实验的等待的时候&#xff0c;有点无聊&#xff0c;就想起来原来自己闲着没事&#xff0c;自己写了个爬虫&#xff0c;爬取了一些搞笑图片&#xff0c;没事看看娱乐下。 相信大家平时都有无聊的时候&#xff0c;那么问题来了&…

笑话类网站推广的几种很实用的方法

导语&#xff1a;现在的互联网上&#xff0c;只要是你想得到网站类型都有。每一个网站在初期都要进行推广&#xff0c;而不同类型的网站由于内容的不同&#xff0c;推广的方式也不一样。... 现在的互联网上&#xff0c;只要是你想得到网站类型都有。每一个网站在初期都要进行推…

详细实例:用python爬虫爬取幽默笑话网站!(建议收藏)

前言&#xff1a; 今天为大家带来的内容是详细实例&#xff1a;用python爬虫爬取幽默笑话网站&#xff01;&#xff08;建议收藏&#xff09;&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下! 爬取网…