我是JavaScript的新手,正在尝试创建一种表单,该表单会将用户带入其输入的子域。用户输入一个字符串,从下拉菜单中选择一个值。用户单击提交后,将根据其输入将其带到自定义URL。
由于某种原因,我的IF语句不起作用,并且前缀始终等于a1
。
代码如下:
<script type="text/javascript">
function goToPage() {
var prefix;
if (document.getElementById('model').value = 93) {
prefix = "a1";
}
else if (document.getElementById('model').value = 95) {
prefix = "a2";
}
else {
prefix = "a3";
}
window.location = "https://example.com/" + prefix + "/" + document.getElementById('string').value;
}
</script>
<input type="text" id="string" />
<select id="model" />
<option value="93" />9-3</option>
<option value="95" />9-5</option>
<option value="96" />9-6</option>
</select>
<input type="submit" value="submit" onclick="goToPage();" />
答案 0 :(得分:0)
您在条件中使用赋值运算符(=
),这就是为什么条件始终求值为true
的原因。您必须使用比较运算符(==
或===
)。
请注意:由于输入值是字符串类型,并且您正在将其与数字进行比较,因此最好在比较之前将它们转换为数字。同样,您使用的HTML标记( select 和 option )也会在开始标记本身中将它们关闭(好像它们是自动关闭的),这是无效的HTML语法。
尝试以下方式:
function goToPage() {
var elValue = Number(document.getElementById('model').value);
var prefix;
if (elValue == 93) {
prefix = "a1";
}
else if (elValue == 95) {
prefix = "a2";
}
else {
prefix = "a3";
}
window.location = "https://example.com/" + prefix + "/" + document.getElementById('string').value;
}
<input type="text" id="string" />
<select id="model">
<option value="93">9-3</option>
<option value="95">9-5</option>
<option value="96">9-6</option>
</select>
<input type="submit" value="submit" onclick="goToPage();" />
答案 1 :(得分:0)
不要使用赋值运算符。单个等式标记表示赋值运算符。在条件中使用双等号。
if (document.getElementById('model').value == 93)