我有一个短的2字符串从C ++发送到我的Javascript(使用Awesomium)。我知道字符串将是“L1”,“G1”,“P1”或“D1”。这些是首字母缩写。
我要做的是让文本div显示发送的初始名称,例如,如果发送“L1”,则“Limes”会出现在屏幕上,或者如果“G1”是发送,“葡萄”将出现。
我试图从字符串中删除最后一个字符,然后检查if字母与四个字母中的一个匹配的语句。然后我使用$('#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;
}
我在JS代码中包含jobHat
段,以显示“L1”,“G1”等字符串按预期工作的区域。图像文件名由字符串替换,字符串显示我拥有的不同图像,因为这些图像名为L1Hat.png,G1Hat.png等。
那么我试图检查字符串的第一个字母以替换div文本的方式有什么问题?
编辑我曾尝试过双= =然后三重= =但仍然没有结果。我把这个例子中的single = in,因为这是我最熟悉的,但我很高兴我这样做了,我可以得到你们的提醒,==或===更适合这个场合。
答案 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
语句不是比较,而是分配。使用双==
或三===