jokes
先看效果如下

目录如下
//index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width">
<title>笑话生成器</title>
<link rel="stylesheet" href="style.css">
<script src="ui.js" defer></script>
<script src="main.js" defer></script>
</head>
<body>
<div>
<label for="customname" id="lbl-customname">请输入自定义的名字:</label>
<input id="customname" type="text" placeholder="李雷">
</div>
<div>
<label for="cn" id="lbl-cn">中国</label>
<input id="cn" type="radio" name="country" value="cn" checked>
<label for="us" id="lbl-us">美国</label>
<input id="us" type="radio" name="country" value="us">
<label for="uk" id="lbl-uk">英国</label>
<input id="uk" type="radio" name="country" value="uk">
</div>
<div>
<button class="randomize">随机生成笑话</button>
</div>
<p class="story"></p>
</body>
</html>
//main.js
const customName = document.getElementById('customname');
const randomize = document.querySelector('.randomize');
const story = document.querySelector('.story');
function randomValueFromArray(array){
const random = Math.floor(Math.random()*array.length);
return array[random];
}
const storyText = 'It was 94 fahrenheit outside, so :insertx: went for a walk. When they got to :inserty:, they stared in horror for a few moments, then :insertz:. Bob saw the whole thing, but was not surprised — :insertx: weighs 300 pounds, and it was a hot day.';
const insertX = ['Willy the Goblin','Big Daddy','Father Christmas'];
const insertY = ['the soup kitchen','Disneyland','the White House'];
const insertZ = ['spontaneously combusted','melted into a puddle on the sidewalk','turned into a slug and crawled away'];
const storyTextZh = '外边有34度,于是:inserta:出去遛弯。当走到:insertb:时他们被眼前的景象惊呆了,然后就:insertc:。李雷全程目睹但他并没有慌,因为:inserta:是一个270斤的胖子,天气又辣么热。';
const insertA = ['怪兽威利', '大老爹', '圣诞老人'];
const insertB = ['救助站', '迪士尼乐园', '白宫'];
const insertC = ['自燃了', '在人行道化成了一坨泥', '变成一条鼻涕虫爬走了'];
randomize.addEventListener('click', result);
function result() {
let newStory, xItem, yItem, zItem, name;
if (document.getElementById('cn').checked) {
newStory = storyTextZh;
xItem = randomValueFromArray(insertA);
yItem = randomValueFromArray(insertB);
zItem = randomValueFromArray(insertC);
newStory = newStory.replace(':inserta:', xItem);
newStory = newStory.replace(':inserta:', xItem);
newStory = newStory.replace(':insertb:', yItem);
newStory = newStory.replace(':insertc:', zItem);
if (customName.value !== '') {
name = customName.value;
newStory = newStory.replace('李雷', name);
}
} else {
newStory = storyText;
xItem = randomValueFromArray(insertX);
yItem = randomValueFromArray(insertY);
zItem = randomValueFromArray(insertZ);
newStory = newStory.replace(':insertx:', xItem);
newStory = newStory.replace(':insertx:', xItem);
newStory = newStory.replace(':inserty:', yItem);
newStory = newStory.replace(':insertz:', zItem);
if (customName.value !== '') {
name = customName.value;
newStory = newStory.replace('Bob', name);
}
if (document.getElementById("uk").checked) {
const weight = Math.round(300 * 0.0714286) + ' stone';
const temperature = Math.round((94 - 32) * 5 / 9) + ' centigrade';
newStory = newStory.replace('94 fahrenheit', temperature);
newStory = newStory.replace('300 pounds', weight);
}
}
story.textContent = newStory;
story.style.visibility = 'visible';
}
//style.css
body {
font-family: helvetica, sans-serif;
width: 350px;
border: 1px solid;
padding: 1em;
}
label {
font-weight: bold;
}
div {
padding-bottom: 20px;
}
input[type="text"] {
padding: 5px;
width: 150px;
}
p {
background: #FFC125;
color: #5E2612;
padding: 10px;
visibility: hidden;
}
//ui.js
document.getElementById('cn').onclick = () => {
document.title = '笑话生成器';
document.getElementById('lbl-customname').textContent = '请输入自定义的名字:';
document.getElementById('lbl-cn').textContent = '中国';
document.getElementById('lbl-us').textContent = '美国';
document.getElementById('lbl-uk').textContent = '英国';
document.getElementById('customname').placeholder = '李雷';
document.querySelector('.randomize').textContent = '随机生成笑话';
};
document.getElementById('us').onclick =
document.getElementById('uk').onclick = () => {
document.title = 'Silly story generator';
document.getElementById('lbl-customname').textContent = 'Enter custom name:';
document.getElementById('lbl-cn').textContent = 'CN';
document.getElementById('lbl-us').textContent = 'US';
document.getElementById('lbl-uk').textContent = 'UK';
document.getElementById('customname').placeholder = 'Bob';
document.querySelector('.randomize').textContent = 'Generate random story';
};
jokes的更多相关文章
- Programmer's Jokes
1. 一天, 下着小雨, 和同事们一起去上班,一位同事差点滑倒,另一位同事笑话说:如果人走路用爬的就不会摔倒了! 遂反问他:能用两行代码搞定的事情为什么要用4行呢? 2. 有趣的公式( Fr ...
- python_爬虫一之爬取糗事百科上的段子
目标 抓取糗事百科上的段子 实现每按一次回车显示一个段子 输入想要看的页数,按 'Q' 或者 'q' 退出 实现思路 目标网址:糗事百科 使用requests抓取页面 requests官方教程 使用 ...
- words
conscious[英][ˈkɒnʃəs][美][ˈkɑnʃəs]consensus[英][kənˈsensəs][美][kənˈsɛnsəs] scious sensuswaterflood; de ...
- http-code 未译
1xx Informational Request received, continuing process. This class of status code indicates a provis ...
- 【转】去掉Sqlite3 数据库中的前后回车换行符(newline)
原文: http://www.blogjava.net/pts/archive/2013/06/10/400... 时间: 2013-06-10 转自:http://www.ityuedu.com/a ...
- MongoDB Shard部署及Tag的使用
Shard部署 准备测试环境 为准备数据文件夹 Cd /home/tiansign/fanr/mongodb/Shard mkdir configdb1 configdb2 configdb3 mk ...
- android 资讯阅读器
最近找申请到了一个不错的接口 , 非常适合拿来写一个资讯类的app. 现在着手写,随写随更.也算是抛砖引玉.烂尾请勿喷.╭(╯^╰)╮ android 资讯阅读器 第一阶段目标样式(滑动切换标签 , ...
- [zz] Pixar’s OpenSubdiv V2: A detailed look
http://www.fxguide.com/featured/pixars-opensubdiv-v2-a-detailed-look/ Pixar’s OpenSubdiv V2: A detai ...
- [计算机取证技术] VDI-in-a-Box Analysis Results
原文跳转: http://dig4n6.blogspot.tw/2013/07/vdi-in-box-analysis-results.html *文中引用图片如无法浏览,请科学上网* VDI-in- ...
随机推荐
- python之路--FTP 上传视频示例
# 服务端 import json import socket import struct server = socket.socket() server.bind(('127.0.0.1',8001 ...
- k8s HPA自动收缩
HPA自动收缩 autoscale 自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController 的副本数量 #创建一个replicaset测试 [r ...
- zabbix-2.4.5的安装配置与使用
系统最小化安装 环境: zabbix_server 12.1.1.1 zabbix_agent 12.1.1.2 zabbix_proxy 12.1.1.3 1.安装环境: ...
- python functools.wraps functools.partial实例解析
一:python functools.wraps 实例 1. 未使用wraps的实例 #!/usr/bin/env python # coding:utf-8 def logged(func): de ...
- 做接口自动化时候,一些登录头信息可以通过aop的方式进行增强
做接口自动化时候,一些登录头信息可以通过aop的方式进行增强
- Nginx tcp限制并发、IP、记日志
L:114 Syntax: limit_conn_zone key zone=name:size;//类似http limit_conn 需要开个共享内存 zone=name(共享内存名称):siz ...
- django--orm表自关联详解
什么是表内自关联 表内自关联是指表内数据相关联的对象和表是相同字段,这样我们就直接用表内关联将外键关联设置成自身表的字段.同样表内关联也分一对多字段和多对多字段 例如:对于微博评论,每条评论都可能有子 ...
- 创建iview框架的项目
http://www.cnblogs.com/jf-67/p/8479176.html 在使用‘vue init webpack my-project’创建项目时,出现了错误 npm ERR! cod ...
- Codeforces Round #433 Div. 1
A:显然从大到小排序后贪心放在第一个能放的位置即可.并查集维护. #include<iostream> #include<cstdio> #include<cmath&g ...
- P1387 最大正方形 dp
思路: i j的最大正方形等于min(他的斜上方的的最大正方形,他的上方有的连续1,他的左方有的连续1)+1 #include<bits/stdc++.h> using namespac ...