为什么';我的javascript if语句是否以数组为目标?
当我在提示符中输入弓箭手、骷髅或气球时,它只显示else alert语句。我不确定我做错了什么,为什么if不以阵列为目标?有人能解释一下或者给点建议吗 多谢各位 带脚本的HTML:为什么';我的javascript if语句是否以数组为目标?,javascript,jquery,html,arrays,if-statement,Javascript,Jquery,Html,Arrays,If Statement,当我在提示符中输入弓箭手、骷髅或气球时,它只显示else alert语句。我不确定我做错了什么,为什么if不以阵列为目标?有人能解释一下或者给点建议吗 多谢各位 带脚本的HTML: 挑战1 风险价值成本; 名称成本=[3,6,7]; 变量名称列表; 姓名列表=[“弓箭手”、“斯巴基”、“佩卡”] var question=prompt('您的卡名是什么?'); if(question.value==名称列表[0]) { 警报('您的姓名成本为'+nameCost[0]); } else if
挑战1
风险价值成本;
名称成本=[3,6,7];
变量名称列表;
姓名列表=[“弓箭手”、“斯巴基”、“佩卡”]
var question=prompt('您的卡名是什么?');
if(question.value==名称列表[0])
{
警报('您的姓名成本为'+nameCost[0]);
}
else if(question.value==名称列表[1])
{
警报('您的姓名成本为'+nameCost[1]);
}
else if(question.value==名称列表[2])
{
警报('您的姓名成本为'+nameCost[2]);
}否则{
警报(“您的姓名和卡不可用”);
}
变量没有值
属性。直接使用问题
挑战1
风险价值成本;
名称成本=[3,6,7];
变量名称列表;
姓名列表=[“弓箭手”、“斯巴基”、“佩卡”]
var question=prompt('您的卡名是什么?');
如果(问题==姓名列表[0])
{
警报('您的姓名成本为'+nameCost[0]);
}
else if(问题==姓名列表[1])
{
警报('您的姓名成本为'+nameCost[1]);
}
else if(问题==姓名列表[2])
{
警报('您的姓名成本为'+nameCost[2]);
}否则{
警报(“您的姓名和卡不可用”);
}
变量没有值
属性。直接使用问题
挑战1
风险价值成本;
名称成本=[3,6,7];
变量名称列表;
姓名列表=[“弓箭手”、“斯巴基”、“佩卡”]
var question=prompt('您的卡名是什么?');
如果(问题==姓名列表[0])
{
警报('您的姓名成本为'+nameCost[0]);
}
else if(问题==姓名列表[1])
{
警报('您的姓名成本为'+nameCost[1]);
}
else if(问题==姓名列表[2])
{
警报('您的姓名成本为'+nameCost[2]);
}否则{
警报(“您的姓名和卡不可用”);
}
提示符将保存输入到问题
变量的值。因此,当与问题交互时,您不需要问题.value
。只需question
提示符将保存输入question
变量的值。因此,在与question交互时,您不需要question.value
。只是问题
不是问题。值
只是问题
否则,解决此问题的更好方法是使用查找表
var cost_table = {
'Archers':3,
'Sparky':6,
'Pekka':7
}
var name = prompt('What is your card name?')
var cost = cost_table[name]
if( cost ){
alert('Your name cost is ' + cost )
}else{
alert('Cost for ' + name + ' available ')
}
这不是
问题。值
只是问题
否则,解决此问题的更好方法是使用查找表
var cost_table = {
'Archers':3,
'Sparky':6,
'Pekka':7
}
var name = prompt('What is your card name?')
var cost = cost_table[name]
if( cost ){
alert('Your name cost is ' + cost )
}else{
alert('Cost for ' + name + ' available ')
}
我个人会将您的代码重构为一个对象,使其更易于使用,并删除一些重复的代码 您最大的问题是试图访问代码中的
question.value
,这是不正确的prompt()
只是将输入变量的内容作为字符串赋值,因此您应该检查justquestion
对于其余部分:一个基本的编码原则是,您不想在代码中重复自己(许多人称之为“干-不要重复自己”),在这种情况下,您通过使用多个带有重复指令的if()
语句(alert(…)
)重复了很多次。例如,在下面的代码中,请注意if语句的每个部分的内容几乎是相同的。所有更改都是您正在调用的数组索引
if (question == nameList[0])
{
alert('Your name cost is ' + nameCost[0]);
}
else if (question== nameList[1])
{
alert('Your name cost is ' + nameCost[1]);
}...
相比之下,我在下面提供的代码对于所有可接受的情况只有一条if语句,对于未找到值的情况,只有一条catch all-else语句
挑战1
变量名称成本={
“弓箭手”:3,
"Sparky":6,,
“佩卡”:7
};
var question=prompt('您的卡名是什么?');
if(nameCost.hasOwnProperty(问题)){
警报('您的成本为:'+nameCost[问题]);
}否则{
警报(“找不到您的成本”);
}
我个人会将您的代码重构为一个对象,使其更易于使用,并删除一些重复的代码
您最大的问题是试图访问代码中的question.value
,这是不正确的prompt()
只是将输入变量的内容作为字符串赋值,因此您应该检查justquestion
对于其余部分:一个基本的编码原则是,您不想在代码中重复自己(许多人称之为“干-不要重复自己”),在这种情况下,您通过使用多个带有重复指令的if()
语句(alert(…)
)重复了很多次。例如,在下面的代码中,请注意if语句的每个部分的内容几乎是相同的。所有更改都是您正在调用的数组索引
if (question == nameList[0])
{
alert('Your name cost is ' + nameCost[0]);
}
else if (question== nameList[1])
{
alert('Your name cost is ' + nameCost[1]);
}...
相比之下,我在下面提供的代码对于所有可接受的情况只有一条if语句,对于未找到值的情况,只有一条catch all-else语句
挑战1
变量名称成本={
“弓箭手”:3,
"Sparky":6,,
“佩卡”:7
};
var question=prompt('您的卡名是什么?');
if(nameCost.hasOwnProperty(问题)){
警报('您的成本为:'+nameCost[问题]);
}否则{
警报(“找不到您的成本”);
}
这里有一个更简单的版本,以防万一:
挑战1
风险价值成本;
名称成本=[3,6,7];
变量名称列表;
姓名列表=[“弓箭手”、“斯巴基”、“佩卡”]
var question=prompt('您的卡名是什么?');
提醒('您的姓名成本为'+nameCost[nameList.indexOf(问题)]);
这里有一个更简单的版本,以防万一:
挑战1
变量名