开发者

Checking if first letter of a string = char

I'm having a short 2 character string being sent from C++ to my Javascript (using Awesomium). I know for a fact that the string will either be "L1", "G1", "P1", or "D1". These are initials.

What I am trying to do is having a text div display the full name of the initial sent in, for example, if "L1" is sent, then "Limes" would appear on the screen, or if "G1" was sent in, "Grapes" would appear.

I've tried to remove the last character from the string, then check with if statements that the letter matches with one of the four. I then set the div's text using $('#div').html("text to be inserted");

For some reason, the code automatically displays the last if statement's contents, whether or not that is the correct string.

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;
}

I include the jobHat segment in the JS code to show an area where the "L1", "G1", etc. string works as it should. The image file name is replaced by the string, which shows different images I have, as those images are named L1Hat.png, G1Hat.png, etc.

So what is wrong with the way I'm trying to check the first letter of the string to replace a div's text?

EDIT I had tried the double == and then the开发者_Python百科 triple === but there was still no results. I put the single = in for this example as it's what I'm most familiar with, but I'm glad I did so I could get the reminder from you all that == or === is better for this occasion.


As others have mentioned, you were assigning rather than testing for equality.

In any event, this code below is simpler and avoids a lot of repetition:

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);
}


Firstly, using slice here is a bad choice. use charAt instead.

Secondly, that 4 if statements is an eyesore. use switch instead.

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);
}


You're using an assignment operator

if(jobInitial = "L")

should be

if(jobInitial === "L")

and so on.


Your if statements are not comparing, but assigning. Use double == or triple ===

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜