用一个按钮从两个选择框中选择下载文件-JavaScript

用一个按钮从两个选择框中选择下载文件-JavaScript,javascript,button,html-select,Javascript,Button,Html Select,我有两个选择框,如下所示: <select id="one"> <option value="default">Select File</option> <option value="path/to/file1">File One</option> <option value="path/to/file2">File Two</option> <option value="p

我有两个选择框,如下所示:

<select id="one">
    <option value="default">Select File</option>
    <option value="path/to/file1">File One</option>
    <option value="path/to/file2">File Two</option>
    <option value="path/to/file3">File Three</option>
</select>

<select id="two">
    <option value="default">Select File</option>
    <option value="path/to/file4">File Four</option>
    <option value="path/to/file5">File Five</option>
    <option value="path/to/file6">File Six</option>
</select>

<p class="button_image">
    <a onclick="download(document.getElementById("one").value)"></a>
</p>
对于一个
select
框来说,这很好,但我似乎不知道如何使用相同的按钮图像。哦,是的,p.class=button_图像的背景图像是一个带有悬停效果的按钮

我之所以希望这些
select
框分开,是因为它们各自代表一组文件,例如32位与64位。所以它们不能结合在一起,因为它不会与页面设计一起流动

我已经使用
getElementById
在PHP中尝试了一些if/else块,但是我被卡住了。这是我尝试过的,似乎只起了部分作用:

<?php

if ('document.getElementById(\"one\")' == 'one') {
    echo "<a onclick='download(document.getElementById(\"one\").value)'></a>";
}

else if ('document.getElementById(\"two\")' == 'two') {
    echo "<a onclick='download(document.getElementById(\"one\").value)'></a>";
}

?>
尝试替换此:

<p class="button_image">
    <a onclick="download(document.getElementById('one').value)"></a>
</p>

作为按钮的元素似乎不合适,只需使用img即可

无论如何,将第一个select与第一个选项以外的选定选项一起使用的函数可以类似于:

function getPath() {
  var select;
  var args = arguments;

  for (var i=0, iLen=args.length; i<iLen; i++) {
    select = document.getElementById(arg[i]);

    if (select && select.selectedIndex > 0) {
      window.location = 'http://www.mysite.com/download/' + select.value;
    } 
  } 
}
函数getPath(){ var选择; var args=参数; 对于(变量i=0,iLen=args.length;i 0){ window.location=http://www.mysite.com/download/'+select.value; } } } 上面期望第一个选项是默认选中的,因此如果选择了它,或者根本没有选择任何选项,则select的selectedIndex将分别为0或-1。通过将选定属性添加到第一个选项中,我将确保选中一个选项:

  <option value="default" selected>Select File</option>
选择文件
电话是:

<img src="buttonImage.jpg" onclick="download('one', 'two');">


尽管您可能希望向select元素添加一个类,并使用GetElementsByCassName或类似工具获取它们,然后循环该集合,而不是对ID进行硬编码。

如果在单击按钮之前从两个
select
框中选择一个文件,会发生什么?是的,很抱歉没有添加该文件。我意识到这个设计有缺陷。理想情况下,如果选择了一个,则另一个将重置为默认值。没有选择这两个选项。无论是一个文件还是另一个文件都是它的意思。考虑使用一个选择或单选按钮(我的偏好)。我同意<代码> A<代码>标签,我认为这是另一种方法的残余。我可能会改变这一点-谢谢。这样效果更好,但我仍然会遇到第一个优先于第二个。例如,如果第一个被选中,那么它将获胜。当选择一个选择框时,我需要弄清楚如何重置另一个选择框。在每个选择框中使用一个重置另一个选择框的
onchange
处理程序。
function download(file1,file2) {
    if (file1 == 'default' && file2 == 'default'){
      return;
    }
    else if(file1 != 'default'){
      window.location = 'http://www.mysite.com/download/' + file1;
    }
    else{
      window.location = 'http://www.mysite.com/download/' + file2;
    }
}
function getPath() {
  var select;
  var args = arguments;

  for (var i=0, iLen=args.length; i<iLen; i++) {
    select = document.getElementById(arg[i]);

    if (select && select.selectedIndex > 0) {
      window.location = 'http://www.mysite.com/download/' + select.value;
    } 
  } 
}
  <option value="default" selected>Select File</option>
<img src="buttonImage.jpg" onclick="download('one', 'two');">