在HTML表单中使用IF逻辑来定向到不同的URL

时间:2019-04-06 04:10:09

标签: javascript html forms

我是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();" />

2 个答案:

答案 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)