js能否做到生成数字的
如:今年生肖虎,01.13.25.37.49
js填虎,html显示:01.13.25.37.49的数字呢?
效果:
大概思路参考
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title></title>
<script type="text/javascript">
// 十二生肖速算法:出生的年份除以12 ,取余数,如果能整除,余数视为0
// 按照下列余数数字对应生肖动物
// 0-猴 1-鸡 2-狗 3-猪 4-鼠 5-牛 6-虎 7-兔 8-龙 9-蛇 10-马 11-羊
function funSx() {
let y1 = document.getElementById("year");
let year = y1.value;
if (isNaN(year)) {
alert("请输入数字");
y1.focus();
y1.select();
} else {
year = parseFloat(year);
if (year >= 1900) {
let sx = year % 12;
switch (sx) {
case 0:
document.getElementById("result").value = "猴";
break;
case 1:
document.getElementById("result").value = "鸡";
break;
case 2:
document.getElementById("result").value = "狗";
break;
case 3:
document.getElementById("result").value = "猪";
break;
case 4:
document.getElementById("result").value = "鼠";
break;
case 5:
document.getElementById("result").value = "牛";
break;
case 6:
document.getElementById("result").value = "虎";
document.getElementById("result2").value = "01.13.25.37.49";
break;
case 7:
document.getElementById("result").value = "兔";
break;
case 8:
document.getElementById("result").value = "龙";
break;
case 9:
document.getElementById("result").value = "蛇";
break;
case 10:
document.getElementById("result").value = "马";
break;
case 11:
document.getElementById("result").value = "羊";
break;
default:
break;
}
} else {
alert("请输入年份,起始值1900年");
y1.focus();
y1.select();
}
}
}
</script>
</head>
<body>
<!-- 01.13.25.37.49 -->
输入年份:<input type="text" name="year" id="year" /><br />
生肖为:<input
type="text"
name="result"
id="result"
readonly="readonly"
/><br />
年龄段:<input
type="text"
name="result2"
id="result2"
readonly="readonly"
/><br />
<button type="button" id="nian" name="nian" onclick="funSx()">提交</button>
</body>
</html>
这就是字符串匹配和替换吧,为什么不能呢
你这几个数字的含义,我不明白,如果就是12生肖都有固定的数字那很简单了,用case来搞定
// 获取生肖数字
function getZodiacNumber(zodiac) {
switch (zodiac) {
case '猴':
return 1;
case '鸡':
return 2;
case '狗':
return 3;
case '猪':
return 4;
case '鼠':
return 5;
case '牛':
return 6;
case '虎':
return '01.13.25.37.49';
case '兔':
return 8;
case '龙':
return 9;
case '蛇':
return 10;
case '马':
return 11;
case '羊':
return 12;
default:
return 0;
}
}
你只要有规则就可以对应生成
可以替换的
可以按照定义的规则生成,例如生肖=》数字,之间相互对应返回相应的数字即可
创建一个匹配对象obj,通过key-value方式匹配
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title></title>
</head>
<body>
输入:<input type="text" id="input" /><br />
结果:
<div id="result"></div>
<button onclick="submit()">提交</button>
<script>
const obj = {
鼠: 1,
牛: 2,
虎: "01.13.25.37.49",
兔: 4,
};
function submit() {
const text = document.getElementById("input").value;
const result = document.getElementById("result");
result.innerText = obj[text] || "暂无匹配";
}
</script>
</body>
</html>
可以在填写的时候判断,然后去显示对应的数字
给个例子参考,不知道是不是题主想要的意思:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>生肖</title>
<script src="js/jquery.min.js"></script>
<style>
</style>
<script>
$(document).ready(function () {
$('#shengxiao').on('change', function(){
var sx = $(this).val();
var ages = [];
for(let i=0;i<5;i++){
ages.push((parseInt(sx)+i*12))
}
var text = '';
for(let i=0;i<ages.length;i++){
if(ages[i]<10){
text += '0'+ages[i];
}else{
text += ages[i];
}
if(i<ages.length-1){
text+=',';
}
}
$('#age').val(text);
})
});
</script>
</head>
<body>
<div>
<label for="shengxiao" style="width: 30px;margin-left: 100px;">生肖:</label>
<select name="shengxiao" id="shengxiao" style="width: 80px;">
<option value="1">虎</option>
<option value="2">兔</option>
<option value="3">龙</option>
<option value="4">蛇</option>
<option value="5">马</option>
<option value="6">羊</option>
<option value="7">猴</option>
<option value="8">鸡</option>
<option value="9">狗</option>
<option value="10">猪</option>
<option value="11">鼠</option>
<option value="12">牛</option>
</select>
</div>
<div>
<label for="shengxiao" style="width: 30px;margin-left: 100px;">年龄:</label>
<input type="text" id="age" width="80px">
</div>
</body>
</html>
你题目的解答代码如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title> 页面名称 </title>
</head>
<body>
<input type="text" id="text" value="虎" />
<input type="button" value="确定" onclick="func();" />
<p id="out"></p>
<script type="text/javascript">
function func() {
var s = document.getElementById("text").value;
var obj = {
'鼠':1,
'牛':2,
'虎':3,
'兔':4,
'龙':5,
'蛇':6,
'马':7,
'羊':8,
'猴':9,
'鸡':10,
'狗':11,
'猪':12
};
var year = new Date().getFullYear();
var arr = [];
var t = (year+3+obj[s])%12+1;
for (var i = 0; i < 5; i++) {
arr.push(t+i*12)
}
document.getElementById("out").innerHTML = arr.join(",");
}
</script>
</body>
</html>
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
猜测你是要计算生肖对应的最近5轮的年龄列表,天际的海浪已经给出了代码,只是计算好像反了,比如兔的应该多轮了一次,算12岁,牛的应该比虎大一岁,算2岁才对,下面是修改后的代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>页面名称 </title>
</head>
<body>
<select id='shengxiao'></select>
<input type="button" value="确定" onclick="func();"/>
<p id="out"></p>
<script type="text/javascript">
var obj = {
'鼠': 1,
'牛': 2,
'虎': 3,
'兔': 4,
'龙': 5,
'蛇': 6,
'马': 7,
'羊': 8,
'猴': 9,
'鸡': 10,
'狗': 11,
'猪': 12
};
var selectObj = document.getElementById('shengxiao');
for (var item in obj)
selectObj.options.add(new Option(item,obj[item]));
function func() {
var s = document.getElementById("shengxiao").value;
var year = new Date().getFullYear();
var arr = [];
var t = (year - 3 - s) % 12 + 1;
for (var i = 0; i < 5; i++) {
arr.push(t + i * 12)
}
document.getElementById("out").innerHTML = arr.join(",");
}
</script>
</body>
</html>
前言:中国汉字 常用的有七千个,总共汉字有九万多个,其实数据量并不算大
1.建立字典,比如code范围 90000-180000 ,90000对应一个汉字 90001对应一个汉字
2.然后根据数字匹配汉字或者汉字匹配数字就都可以了
3.字典可以先跑一个-新华字典应该有相关接口
4.自己创建字典库,来一个字典中没有的汉字,则新增并对应一个没有赋值的code(可利用数据库自增等方式)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<label for="input">
输入生肖:
<input id="input" type="text">
</label>
<button id="bnt">查询</button>
</div>
<div id="box">暂无数据</div>
<script>
let bnt = document.getElementById("bnt");
let oinput = document.getElementById("input");
let box = document.getElementById("box");
bnt.onclick = function () {
let sx = {
'兔': '12,24,36,48,60',
'龙': '11,23,35,47,59',
'蛇': '10,22,34,46,58',
'马': '09,21,33,45,57',
'羊': '08,20,32,44,56',
'猴': '07,19,31,43,55',
'鸡': '06,18,30,42,54',
'狗': '05,17,29,41,53',
'猪': '04,16,28,40,52',
'鼠': '03,15,27,39,51',
'牛': '02,14,26,38,50',
'虎': '01.13.25.37.49',
}
let result = "";
for (let key in sx) {
if (oinput.value.lastIndexOf(key) != -1) {
result = sx[key]
}
}
if (result) {
box.innerHTML = `数据结果:${result}`
} else {
box.innerHTML = `暂无数据`
}
}
</script>
</body>
</html>