javascript - 使用下拉列表动态更改 href 属性的问题

标签 javascript jquery html

我正在尝试使用基于用户对两个下拉菜单的输入的 JavaScript 创建链接。它有效,但是当用户返回更改任一下拉列表中的数据时会出现问题 - 它再次运行脚本并且链接变成类似 href="report_dayGU.phpJW.php" 而不是所需的 href="report_dayGU.php"。如果有人可以帮助解决此问题,我们将不胜感激。

HTML:

<div class="dropdown-spans">
  <label for="reportSpans">Select Report Span:</label>
  <select id="reportSpans" name="reportSpans">
    <option value="#">Select</option>
    <option value="_day">Today</option>
    <option value="_week">This Week</option>
    <option value="_month">This Month</option>
    <option value="_all">All Records</option>
  </select>
</div>

<br>

<div class="dropdown-aircraft">
  <label for="reportAircraft">Select Aircraft:</label>
  <select id="reportAircraft" name="reportAircraft">
    <option value="#">Select</option>
    <option value="GU">GU</option>
    <option value="JW">JW</option>
    <option value="NO">NO</option>
    <option value="SD">SD</option>
  </select>
</div>

<br>

<div class="button-produce">
  <a id="report" href="#">Produce Report</a>
</div>

JavaScript:

var span = document.getElementById('reportSpans');
span.onchange = function() {
  document.getElementById("report").href = "report" + this.value;
}

var ac = document.getElementById('reportAircraft');
ac.onchange = function() {
  document.getElementById("report").href = document.getElementById("report").href + this.value + ".php";
}

JSFiddle

最佳答案

将报告超链接的生成移动到一个单独的函数,由对任一选择框的更改调用。

示例代码是:

var span = document.getElementById('reportSpans');
span.onchange = generateLink;

var ac = document.getElementById('reportAircraft');
ac.onchange = generateLink;

function generateLink () {
	 var spanValue = document.getElementById("reportSpans").value;
   var aircraftValue = document.getElementById("reportAircraft").value;
   var reportLink = (spanValue != "#" && aircraftValue != "#")?("report" + spanValue + aircraftValue + ".php"):"#";

	 window.alert(reportLink)
   document.getElementById("report").href = reportLink;
}
<div class="dropdown-spans">
  <label for="reportSpans">Select Report Span:</label>
  <select id="reportSpans" name="reportSpans">
    <option value="#">Select</option>
    <option value="_day">Today</option>
    <option value="_week">This Week</option>
    <option value="_month">This Month</option>
    <option value="_all">All Records</option>
  </select>
</div>

<br>

<div class="dropdown-aircraft">
  <label for="reportAircraft">Select Aircraft:</label>
  <select id="reportAircraft" name="reportAircraft">
    <option value="#">Select</option>
    <option value="GU">GU</option>
    <option value="JW">JW</option>
    <option value="NO">NO</option>
    <option value="SD">SD</option>
  </select>
</div>

<br>

<div class="button-produce">
  <a id="report" href="#">Produce Report</a>
</div>

关于javascript - 使用下拉列表动态更改 href 属性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41901954/

相关文章:

Jquery .css ("background-image") 不执行任何操作

javascript - 调整页面大小时的图像拉伸(stretch) - 通过 jquery 更改了 css - 需要刷新吗?

新页面上的 Javascript 加载以将 anchor 移动到顶部固定元素下方

jquery - '...' 省略号按钮的 css/jquery 解决方案

Javascript 返回错误行为是怎么回事?

javascript - 无法使用 jquery 获取数据属性

javascript - 将复选框中的值放入 html 输入字段

javascript - 循环内的jQuery多个延迟动画,动画有时不执行

javascript - 我应该使用 `.toPrecision()` 而不是舍入和求幂吗?

jquery - Bootstrap 4 带有表单的网格布局