检查字符串的第一个字母是否为char

时间:2011-07-08 13:42:33

标签: javascript jquery html css string

我有一个短的2字符串从C ++发送到我的Javascript(使用Awesomium)。我知道字符串将是“L1”,“G1”,“P1”或“D1”。这些是首字母缩写。

我要做的是让文本div显示发送的初始名称,例如,如果发送“L1”,则“Limes”会出现在屏幕上,或者如果“G1”是发送,“葡萄”将出现。

我试图从字符串中删除最后一个字符,然后检查if字母与四个字母中的一个匹配的语句。然后我使用$('#div').html("text to be inserted");

设置div的文本

由于某种原因,代码会自动显示最后一个if语句的内容,无论这是否是正确的字符串。

JS:

function showStats(job)
{
   $('#jobHat').css("hat-image", "url(images/"+job+"Hat.png)");

   var jobInitial = job.slice(0, -1); 
   if(jobInitial = "L")
   {
        $('#playerJobText').html("Landman");
   }
   if(jobInitial = "G")
   {
        $('#playerJobText').html("Geologist");
   }
   if(jobInitial = "P")
   {
        $('#playerJobText').html("Petroleum Engineer");
   }
   if(jobInitial = "D")
   {
        $('#playerJobText').html("Drilling Engineer");
   } 

HTML:

<div id ="playerJobText"></div>

CSS:

#playerJobText
{
   width: 200px;
   height: 50px;
   position: absolute;
   font-weight: bold;
   text-align:center;
   top: 32.5%;
   left: 19%;
   font-size: 100%;
   font-style: normal;
   color: black;
   z-index: 50;
}

我在JS代码中包含jobHat段,以显示“L1”,“G1”等字符串按预期工作的区域。图像文件名由字符串替换,字符串显示我拥有的不同图像,因为这些图像名为L1Hat.png,G1Hat.png等。

那么我试图检查字符串的第一个字母以替换div文本的方式有什么问题?

编辑我曾尝试过双= =然后三重= =但仍然没有结果。我把这个例子中的single = in,因为这是我最熟悉的,但我很高兴我这样做了,我可以得到你们的提醒,==或===更适合这个场合。

4 个答案:

答案 0 :(得分:5)

正如其他人所提到的,你是分配而不是测试是否相等

无论如何,下面的代码更简单,避免了大量重复:

function showStats(job)
{
   $('#jobHat').css("hat-image", "url(images/"+job+"Hat.png)");

   var initial = job[0];  // or job.substring(0, 1);
   var title = ({
       L: 'Landman',
       G: 'Geologist',
       P: 'Petroleum Engineer',
       D: 'Drilling Engineer'
   })[initial];

   $('#playerJobText').text(title);
}

答案 1 :(得分:3)

首先,在这里使用切片是一个糟糕的选择。请改用 charAt

其次,4 if 语句是一个眼睛。请改用开关

function showStats(job){
    $('#jobHat').css("hat-image", "url(images/"+job+"Hat.png)");

    var full_name;
    switch(job.charAt(0)){
        case "L":
            full_name="Landman";
            break;
        case "G":
            full_name="Geologist";
            break;
        case "P":
            full_name="Petroleum Engineer";
            break;
        case "D":
            full_name="Drilling Engineer";
            break;
        default:
            throw "invalid input: "+input;
    }
    $('#playerJobText').html(full_name);
}

答案 2 :(得分:1)

您正在使用分配运算符

if(jobInitial = "L")

应该是

if(jobInitial === "L")

等等。

答案 3 :(得分:1)

您的if语句不是比较,而是分配。使用双==或三===