我有这个javascript代码,它应该在用户输入" 1"之后在警告框中显示4.0026。进入提示,但由于某种原因,它决定只采取" h"出于"他"并在认为你输入时使用它" h"仅
var first=prompt("Enter first term");
if(first==""){
periodictable();
}else{
var split=first.split(" ");
var firsttrans=split[1].replace("h", 1.008).replace("he", 4.0026);
alert(firsttrans);
}
btw忽略函数调用periodictable()
,因为它与此问题无关。
答案 0 :(得分:6)
替换h
后,您内部不再有h
。您可以更改替换内容并首先查看he
,然后查看h
。
var firsttrans = split[1].replace("he", 4.0026).replace("h", 1.008);
答案 1 :(得分:1)
您必须更改替换逻辑。首先你要检查他,如果没有找到,那么h。根据您当前的逻辑,由于您首先替换h,因此不会再找到“他”。
this.handleSelectChange
这是另一种清洁解决方案。这样您就可以根据需要添加任意对,而无需触及替换代码。您需要做的只是更新更改并完成。
split[1].replace("he", 4.0026).replace("h", 1.008)
答案 2 :(得分:0)
正如Nina Scholz所说,替补是按顺序发生的。
如果您稍后添加更多元素,您可能希望将数据提取到单独的位置,如下所示:
var replacements = {
"h": 1.008,
"he": 4.0026
};
var first=prompt("Enter first term");
if(first==""){
periodictable();
}else{
var split=first.split(" ");
var firsttrans=replacements[split[1]];
alert(firsttrans);
}