2017-10-05 62 views
0

網站開發新手。我有一個單選按鈕和兩個下拉菜單。每個這些事項的選擇,並將決定哪個文件將打開。當進行每次選擇並且用戶點擊「提交」時,我希望頁面打開相應的Excel文件。根據下拉菜單選擇打開文件

我有單選按鈕和下拉內置,但是當我按下提交時,沒有任何反應。我試圖在PHP中這樣做,使其更加動態,並避免有這麼多的if/else語句,但PHP在我的服務器上無法正常運行,所以我選擇使用JavaScript,這會導致if語句更多,但至少會是功能性的。

這是我的JavaScript:

<script type="text/javascript"> 

    var excelObject; 
    excelObject = new ActiveXObject("Excel.Application"); 
    excelObject.Visible = true; 
    excelObject.Workbooks.Open(strLocation, false, boolReadOnly); 


    //x, y, and z are the variables for the dropdowns/radio button 
    var x = document.getElementByID("x"); 
    var y = document.getElementByID("y"); 
    var z = document.getElementByID("z"); 

    window.onload = function(){ 
     document.getElementByID("x").innerHTML=x; 
     document.getElementByID("y").innerHTML=y; 
     document.getElementByID("z").innerHTML=z; 

    function docOpen(){ 

     if (x == "test" && y ="cat" && z == "claws"){ 
      readFile('file:\\folder\folder\test_cat_claws.xls'); 

這是我補充的形式:

<form name ='myform' method="post" onSubmit="Javascript:docOpen()" > 

而這正是我按下提交:

<input type= "submit" value="Submit" name="Submit" onclick="Javascript:docOpen(); return false;"/> 

編輯: 整個代碼 - 編輯,以便更爲通用:

<html lang=''> 
<head> 
    <meta charset='utf-8'> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <script type="text/javascript"> 

     var x = document.getElementByID("x"); 
      var y = document.getElementByID("y"); 
      var z = document.getElementByID("z"); 


     window.onload = function(){ 
      document.getElementByID("x").innerHTML=x; 
      document.getElementByID("y").innerHTML=y; 
      document.getElementByID("z").innerHTML=z; 

     function docOpen(){ 

      if (x == "test" && y =="cat" && z == "claws"){ 
          var excelObject; 
          excelObject = new ActiveXObject("Excel.Application"); 
          excelObject.Visible = true; 
          excelObject.Workbooks.Open('file:\your_excel_file_location_here.xlsx', false, boolReadOnly);  
      } 
    </script> 

    <title>Title</title> 

</head> 
<body> 

<div class="page"> 
    <div class="header"> 
    <table border="0px"><tr><td> 
    <td id="pagetitle"><h1>Page Title</h1></td> 

    <td><iframe src="" height="60" width="280" style="border:none" scrolling="no";> </iframe></td></tr></table> 
    </div> 

    <div id="includedContent"></div> 

<div class="main" id="MainContent"> 


<div class="form_table"> 

<!--<div class="clear"></div>--> 

<form name ='myform'> 

<div id="q0" class="q required"> 
<a class="item" name="radiobutton0"></a> 
<table class="inline_grid"> 
<tr> 
<td> <input type="radio" name="x" id="x" value="test" />Test</label></td> 
<td> <input type="radio" name="x" id="x" value="test2" />Test2</label></td> 
</tr> 
</table> 
</div> 

<div class="clear"></div> 

<div id="q1" class="q required"> 
<a class="item" name="dropdown1"></a> 
<label>&nbsp;<b class="icon_required" style="color:#FF0000">*</b></label> 
<select id="y" name="y" class="drop_down"> 
<option></option> 
<option value="cat">Cat</option> 
<option value="dog">Dog</option> 
<option value="bird">Bird </option> 
</select> 
</div> 

<div id="q2" class="q required"> 
<a class="item" name="dropdown2"></a> 
<label>&nbsp;<b class="icon_required" style="color:#FF0000">*</b></label> 
<select id="z" name="z" class="drop_down"> 
<option></option> 
<option value="claws">Claws</option> 
<option value="paws">Paws</option> 
</select> 
</div> 
<div class="clear"></div><br/> 




<input type="Submit" name="Submit" onclick="docOpen();"/> 

</form> 


    </div> 
    <div class="clear"> 
    </div> 

</div> 

</body> 

</html> 
+0

剛擡起頭,因爲你使用ActiveX對象的代碼只會在IE –

+0

工作的這段代碼將只能在IE中執行 - 使它成爲有點困難。 @AlexanderEdwards – AAA

+0

明白了,檢查我的答案。 –

回答

0

好了,幾件事情需要注意:

看來好像在你的邏輯,你被錯誤使用比較運算符和使用單個=而不是兩個==進行比較。改變看起來像這樣。

if (x == "test" && y =="cat" && z == "claws") 

此外,您可能正在初始化ActiveXObject太早(?)。爲什麼條件滿足後無法創建Excel工作表,就像這樣:

if (x == "test" && y =="cat" && z == "claws"){ 
var excelObject; 
    excelObject = new ActiveXObject("Excel.Application"); 
    excelObject.Visible = true; 
    excelObject.Workbooks.Open(strLocation, false, boolReadOnly); 

這樣,你的代碼不會甚至懶得打開電子表格,除非他們滿足特定的標準。

此外,從我所知道的,readFile()不是一個有效的js函數。您需要將文件位置傳遞給excelObject.Workbooks.Open函數的第一個參數。因此,所有說,你的代碼將是這個樣子:

//x, y, and z are the variables for the dropdowns/radio button 
    var x = document.getElementByID("x"); 
    var y = document.getElementByID("y"); 
    var z = document.getElementByID("z"); 

    window.onload = function(){ 
      document.getElementByID("x").innerHTML=x; 
      document.getElementByID("y").innerHTML=y; 
      document.getElementByID("z").innerHTML=z; 
      } 

    function docOpen(){ 

     if (x == "test" && y =="cat" && z == "claws"){ 
      var excelObject; 
      excelObject = new ActiveXObject("Excel.Application"); 
      excelObject.Visible = true; 
      excelObject.Workbooks.Open('file:\your_excel_file_location_here.xlsx', false, boolReadOnly);  
       } 
} 

再次,你要知道,這隻會在IE瀏覽器給您的使用ActiveXObjects的。也許這已經足夠滿足您的需求。

與完整的代碼編輯:

<html lang=''> 
<head> 
    <meta charset='utf-8'> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 



    <title>Title</title> 

</head> 
<body> 

<div class="page"> 
    <div class="header"> 
    <table border="0px"><tr><td> 
    <td id="pagetitle"><h1>Page Title</h1></td> 

    <td><iframe src="" height="60" width="280" style="border:none" scrolling="no";> </iframe></td></tr></table> 
    </div> 

    <div id="includedContent"></div> 

<div class="main" id="MainContent"> 


<div class="form_table"> 

<!--<div class="clear"></div>--> 

<form name ='myform'> 

<div id="q0" class="q required"> 
<a class="item" name="radiobutton0"></a> 
<table class="inline_grid"> 
<tr> 
<td> <input type="radio" name="x" id="x1" value="test" />Test</label></td> 
<td> <input type="radio" name="x" id="x" value="test2" />Test2</label></td> 
</tr> 
</table> 
</div> 

<div class="clear"></div> 

<div id="q1" class="q required"> 
<a class="item" name="dropdown1"></a> 
<label>&nbsp;<b class="icon_required" style="color:#FF0000">*</b></label> 
<select id="y" name="y" class="drop_down"> 
<option></option> 
<option value="cat">Cat</option> 
<option value="dog">Dog</option> 
<option value="bird">Bird </option> 
</select> 
</div> 

<div id="q2" class="q required"> 
<a class="item" name="dropdown2"></a> 
<label>&nbsp;<b class="icon_required" style="color:#FF0000">*</b></label> 
<select id="z" name="z" class="drop_down"> 
<option></option> 
<option value="claws">Claws</option> 
<option value="paws">Paws</option> 
</select> 
</div> 
<div class="clear"></div><br/> 


</form> 

<button onclick="docOpen(); return;">button</button> 


    </div> 
    <div class="clear"> 
    </div> 

</div> 


    <script type="text/javascript"> 

     function docOpen(){ 

      var x = document.querySelectorAll('input[type="radio"]:checked')[0].value; 
      var ySelect = document.getElementById('y'); 
      var y = ySelect.options[ySelect.selectedIndex].value; 
      var zSelect = document.getElementById('z'); 
      var z = zSelect.options[zSelect.selectedIndex].value; 



      if (x == "test" && y =="cat" && z == "claws"){ 
          var excelObject; 
          excelObject = new ActiveXObject("Excel.Application"); 
          excelObject.Visible = true; 
          excelObject.Workbooks.Open('file:\excel.xlsx');  
      } 
     } 
    </script> 
</body> 

</html> 
相關問題