js填写中文能否生成数字

js能否做到生成数字的

如:今年生肖虎,01.13.25.37.49
js填虎,html显示:01.13.25.37.49的数字呢?

效果:

img

大概思路参考

<!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>

img

img

你题目的解答代码如下:

<!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>

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

猜测你是要计算生肖对应的最近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>