javascript - 从函数中的 switch 语句更改 var 值

标签 javascript switch-statement

我有以下函数,除其他参数外,它接收一个名为 pack_choice 的参数(它是一个数字)。根据数字,我想为 var 分配一个文本,然后在 Canvas 上打印这个 var。

这里是完整的函数:

function create_voucher(visitor_name, unique_number, pack_choice)
{
var canvas = $("#canvas_voucher")[0];
var str_pack_name;

alert(pack_choice);

switch (pack_choice)
{
    case 1:
        str_pack_name = 'text 1';
        alert(str_pack_name);
        break;
    case 2:
        str_pack_name = 'text 2';
        alert(str_pack_name);
        break;
    case 3:
        str_pack_name = 'text 3';
        alert(str_pack_name);
        break;
}

alert(str_pack_name);

if (canvas.getContext)
{
    var ctx = canvas.getContext('2d');

    // Draw shapes
    var img = new Image();
    img.src = 'images/voucher.jpg';

    img.onload = function(){
        ctx.drawImage(img,0,0);
        ctx.fillStyle="#000000";

        ctx.font="bold 25px monospace";
        ctx.fillText(str_pack_name, 600, 120);

        ...draw name...

        ...draw number...
        draw_voucher_img();

        ...jQuery functions...
    }
} else {
    alert('Please update your browser');
}

}

alert(pack_choice); 确实给了我传递的号码。但是 alert(str_pack_name); 在警报中给我 undefined 消息并将其绘制在 Canvas 上。

为什么会发生这种情况,我该如何解决?

最佳答案

只需更改您的switch case 语句 以识别字符串而不是数字:

switch (pack_choice) {
  case '1':
  case '2':
  case '3':
}

这应该可以解决问题。

关于javascript - 从函数中的 switch 语句更改 var 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18724239/

相关文章:

JavaScript、CSS : Clip to be inside parent DIV

c#: 切换大小写: if (case:)

javascript - 来自 API 的 node.js pg-promise 和分页

javascript - 如何为对象列表显示多个日历

javascript - 为移动设备提供一组不同的图像

c# - 无法将可解构类型隐式转换为元组

perl - 在 Perl 5 中获取 switch/case 行为

lua - Lua 语言中 switch 语句的替代方法是什么?

c - 如何将开关箱内的箱子软分隔

javascript - 调整浏览器大小时 Modernizr 媒体查询不起作用