请老师检查,代码怎么修改能避免输入框只输入空格导致绘制不出文字的情况?

请老师检查,代码怎么修改能避免输入框只输入空格导致绘制不出文字的情况?

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>canvas案例</title>
    <style>
        .content{
            width: 1000px;
            height: 285px;
            margin: 100px auto;
        }
        .input-content{
            width: 300px;
            height: 248px;
            background-color: #a4a19a;
            padding-top: 37px;
            float: left;
        }
        .text{
            width: 255px;
            height: 23px;
            font-size: 10px;
            background-color: #fff;
            padding-left: 10px;
            border: none;
            border-radius: 12px;
            outline: none;
            margin: 0 18px 22px;
        }
        .submit{
            width: 84px;
            height: 23px;
            font-size: 10px;
            background-color: #232124;
            border-radius: 12px;
            border: none;
            outline: none;
            color: #fff;
            margin-left: 108px;
            cursor: pointer;
        }
        .canvas-content{
            width: 700px;
            height: 100%;
            background-color: #f0e9d6;
            float: left;
        }
        .card{
            margin: 75px 100px;
        }
    </style>
</head>
<body>
    <div class="content">
        <div class="input-content">
            <input type="text" class="text" placeholder="姓名" id="name" autocomplete="off" maxlength="6">
            <input type="text" class="text" placeholder="地址" id="adds" autocomplete="off" maxlength="10">
            <input type="text" class="text" placeholder="职业" id="work" autocomplete="off" maxlength="10">
            <input type="text" class="text" placeholder="口号" id="slogan" autocomplete="off"  maxlength="10">
            <button class="submit" id="subBtn">生成名片</button>
        </div>
        <div class="canvas-content">
            <canvas class="card" id="canvas" width="500px" height="76px">
                您的浏览器不支持canvas
            </canvas>
        </div>
    </div>
    <script>
        var canvas = document.getElementById("canvas");
        var ctx = canvas.getContext('2d');
        var btn = document.getElementById('subBtn'),
            nameNode = document.getElementById('name'),
            addsNode = document.getElementById('adds'),
            workNode = document.getElementById('work'),
            sloganNode = document.getElementById('slogan');

        function draw() {
            var nameStr = nameNode.value || '请输入姓名',
                addsStr = addsNode.value || '请输入地址',
                workStr = workNode.value || '请输入职业',
                sloganStr = sloganNode.value || '请输入口号'; 

            //创建canvas渐变色背景
            var linearGradient = ctx.createLinearGradient(0,38,500,38);
            linearGradient.addColorStop(0,'#000');
            linearGradient.addColorStop(.6,'#000');
            linearGradient.addColorStop(1,'grey');
            ctx.fillStyle = linearGradient;
            ctx.fillRect(0,0,canvas.width,canvas.height);

            //设置图片
            var img = new Image();
            img.src = 'http://img1.sycdn.imooc.com/climg//59859f4d00014f1503000100.jpg';
            img.onload = function () {
                ctx.drawImage(img,20,11,80,81,0,0,78,78);
            }

            //设置文字
            ctx.fillStyle = '#fff';
            ctx.textAlign = 'left';
            ctx.textBaseline = 'top';

            ctx.save();
            ctx.font = 'bold 22px 微软雅黑';
            ctx.fillText(nameStr,93,10);
            ctx.restore();

            ctx.save();
            ctx.font = 'bold 14px 微软雅黑';
            ctx.fillText(addsStr,93,37);
            ctx.fillText(workStr,93,56);

            var nameStrWidth = ctx.measureText(nameStr).width,
                sloganPositionX = 245,
                sloganX = nameStrWidth + sloganPositionX;

            //移动中心点 设置旋转 设置旋转文字
            ctx.translate(sloganX,37);
            ctx.rotate(- Math.PI / 30);
            ctx.fillText(sloganStr,0,0);
            ctx.restore();
        }

        draw();

        //设置btn点击事件
        btn.onclick = function () {
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            draw();
        };
    </script>
</body>
</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,若是使用多个空格的话,可以使用正则,用正则将空格替换为空(什么都没有),然后什么都没有在if判断的时候会为假,例:

http://img1.sycdn.imooc.com//climg/5e7328d2099518d111050244.jpg

祝学习愉快~

好帮手慕糖 2020-03-19 13:56:31

同学你好,如下,可以添加个判断,输入都不为空的时候,再清除画板,调用函数,不然就弹出提示,例:

http://img1.sycdn.imooc.com//climg/5e7309660977bd2210840226.jpg

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

  • 提问者 龍巛幽 #1
    老师 我试了一下,输入一个空格还可以,但是输入多几个空格又不行了,这怎么办?
    2020-03-19 15:46:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师