Проверка, если первая буква строки = char - PullRequest
2 голосов
/ 08 июля 2011

У меня короткая 2-символьная строка, отправляемая из C ++ в мой Javascript (с использованием Awesomium).Я точно знаю, что строка будет "L1", "G1", "P1" или "D1".Это инициалы.

Я пытаюсь сделать так, чтобы в текстовом div отображалось полное имя отправляемого инициала, например, если отправлено «L1», то на экране появится «Limes».или, если «G1» было отправлено, появится «Виноград».

Я пытался удалить последний символ из строки, а затем проверить с помощью операторов if, что буква соответствует одному из четырех.Затем я устанавливаю текст div, используя $('#div').html("text to be inserted");

. По какой-то причине код автоматически отображает последнее содержимое оператора 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;
}

Я включил сегмент jobHat в код JS, чтобы показать область, где "L1", "G1 "и т. Д. Строка работает как надо.Имя файла изображения заменяется строкой, которая показывает различные изображения, которые у меня есть, так как эти изображения называются L1Hat.png, G1Hat.png и т. Д.

Так что же не так с тем, как я пытаюсьпроверить первую букву строки, чтобы заменить текст div?

EDIT Я пробовал двойной ==, а затем тройной ===, но результатов по-прежнему не было.Я поместил сингл = в этом примере, так как это то, с чем я больше всего знаком, но я рад, что сделал так, чтобы я мог получить от вас напоминание, что == или === лучше для этого случая.

Ответы [ 4 ]

5 голосов
/ 08 июля 2011

Как уже упоминалось, вы присваивали , а не тестирование на равенство .

В любом случае, приведенный ниже код проще и позволяет избежать повторения:

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);
}
3 голосов
/ 08 июля 2011

Во-первых, использование slice - плохой выбор. используйте взамен charAt .

Во-вторых, эти 4 , если заявления - это бровь вместо этого используйте switch .

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);
}
1 голос
/ 08 июля 2011

Ваши if операторы не сравнивают, а присваивают.Используйте двойной == или тройной ===

1 голос
/ 08 июля 2011

Вы используете оператор присваивания

if(jobInitial = "L")

должен быть

if(jobInitial === "L")

и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...