多个下拉值不会在新的HTML页面中显示

时间:2017-08-28 06:33:01

标签: javascript html

以下是我的代码,用户可以从下拉列表中选择多个值,当用户点击按钮时,可以使用以下功能。所选值将显示在新页面上。我还为两个属性创建了类,以便列出所选的值。

不幸的是,在选择后单击按钮时,不会显示任何内容。需要帮助。

" mainTest.html"页。



< script type = "text/javascript" >
  (function() {
    /**
     * Handles the click of the submit button.
     */
    function onSubmitClicked(event) {
      var url = 'newPageTest.html?';
      var foodbevs = document.getElementsByClassName('foodbeverage');

      for (var i = 0; i < foodbevs.length; i++) {
        if (i > 0) url += '&';
        url += 'foodbeverage=' + encodeURIComponent(foodbevs[i].value);
      }

      var statuses = document.getElementsByClassName('status');

      for (i = 0; i < statuses.length; i++) {
        url += '&status=' + encodeURIComponent(statuses[i].value);
      }

      location.href = url;
    }
    // Get the button from the DOM.
    var submitButton = document.getElementById('btngo');
    // Add an event listener for the click event.
    submitButton.addEventListener('click', onSubmitClicked);

  })();

<
/script>
&#13;
<!DOCTYPE html>
<html>

<body>

  <h4 style="color:darkblue">Choose Your Food/Beverage & Quantity : </h4>

  <table>
    <tr>
      <td>

        <B>Choose a Food/Beverage : </B>

        <select class="foodbeverage"> 
	
	<optgroup label="DEFAULT">
	<option value = "NONE">NONE</option>
	</optgroup>
	
	<optgroup label="Food">
	<option value = "Chicken Chop">Chicken Chop</option>
	<option value = "Pasta">Pasta</option>
	<option value = "Pizza">Pizza</option>
	<option value = "Chocolate Cake">Chocolate Cake</option>
	<option value = "Red Velvet Cake">Red Velvet Cake</option>
	<option value = "Ice Cream Cake">Ice Cream Cake</option>
	</optgroup>
	
	<optgroup label="Beverages">
	<option value = "Milk">Milk</option>
	<option value = "Fresh Juice">Fresh Juice</option>
	<option value = "Ice Cream">Ice Cream</option>
	<option value = "Coffee">Coffee</option>
	<option value = "Carbonated Can Drink">Carbonated Can Drink</option>
	<option value = "Water">Water</option>
	</optgroup>
	
	</select>
        <br/>

        <B>Choose a Food/Beverage : </B>

        <select class="foodbeverage"> 
	
	<optgroup label="DEFAULT">
	<option value = "NONE">NONE</option>
	</optgroup>
	
	<optgroup label="Food">
	<option value = "Chicken Chop">Chicken Chop</option>
	<option value = "Pasta">Pasta</option>
	<option value = "Pizza">Pizza</option>
	<option value = "Chocolate Cake">Chocolate Cake</option>
	<option value = "Red Velvet Cake">Red Velvet Cake</option>
	<option value = "Ice Cream Cake">Ice Cream Cake</option>
	</optgroup>
	
	<optgroup label="Beverages">
	<option value = "Milk">Milk</option>
	<option value = "Fresh Juice">Fresh Juice</option>
	<option value = "Ice Cream">Ice Cream</option>
	<option value = "Coffee">Coffee</option>
	<option value = "Carbonated Can Drink">Carbonated Can Drink</option>
	<option value = "Water">Water</option>
	</optgroup>
	
	</select>
        <br/>

      </td>

      <td>
        <B>Dine In or Take Away : </B>
        <select class="status"> 
	<optgroup label="DEFAULT">
	<option value = "NONE">NONE</option>
	</optgroup>
	<optgroup label="Status">
	<option value = "Dine In">Dine In</option>
	<option value = "Take Away">Take Away</option>
	</optgroup>
	</select>
        <br/>

        <B>Dine In or Take Away : </B>
        <select class="status"> 
	<optgroup label="DEFAULT">
	<option value = "NONE">NONE</option>
	</optgroup>
	<optgroup label="Status">
	<option value = "Dine In">Dine In</option>
	<option value = "Take Away">Take Away</option>
	</optgroup>
	</select>
        <br/>
      </td>
    </tr>
  </table>
  <br/>
  <br/>

  <input type="submit" id="btngo" value="Go" />

  <br/>


</body>

</html>
&#13;
&#13;
&#13;

&#34; newPageTest.html&#34;页。

&#13;
&#13;
< script type = "text/javascript" >

  function parseQuery(str) {
    if (typeof str != "string" || str.length == 0) return {};
    var s = str.split("&");
    var s_length = s.length;
    var bit, query = {},
      first, second;
    for (var i = 0; i < s_length; i++) {
      bit = s[i].split("=");
      first = decodeURIComponent(bit[0]);
      if (first.length == 0) continue;
      second = decodeURIComponent(bit[1]);
      if (typeof query[first] == "undefined") query[first] = second;
      else if (query[first] instanceof Array) query[first].push(second);
      else query[first] = [query[first], second];

    }
    return query;
  }

//Function to update "showdata" div with URL Querystring parameter values
function passParameters() {
  window.onload = passParameters;
  var query = parseQuery(window.location.search);
  var data = "<b>Food Beverages:</b> " + query.foodbeverage + " <b>Dine/Takeaway:</b> " + query.status;
  document.getElementById("showdata").innerHTML = data;
}

<
/script>
&#13;
<!DOCTYPE html>
<html>

<body>


  <div id="showdata"></div>

</body>

</html>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

我从你的代码中发现了2个错误。

  1. window.onload = passParameters;放在passParameters功能之外。
  2. 例如:

    function passParameters() {
      var query = parseQuery(window.location.search);
      var data = "<b>Food Beverages:</b> " + query.foodbeverage + " <b>Dine/Takeaway:</b> " + query.status;
      document.getElementById("showdata").innerHTML = data;
    }
    window.onload = passParameters;
    
    1. 来自输入查询parseQuery
    2. {"?foodbeverage":"Chicken Chop","foodbeverage":"Pasta","status":["Dine In","Take Away"]}返回?foodbeverage=Chicken%20Chop&foodbeverage=Pasta&status=Dine%20In&status=Take%20Away

      您可能希望在str = str.substr(1);

      之前添加var s = str.split("&");

      例如

        function parseQuery(str) {
          if (typeof str != "string" || str.length == 0) return {};
          str = str.substr(1);
          var s = str.split("&");
          var s_length = s.length;
          var bit, query = {},
            first, second;
          for (var i = 0; i < s_length; i++) {
            bit = s[i].split("=");
            first = decodeURIComponent(bit[0]);
            if (first.length == 0) continue;
            second = decodeURIComponent(bit[1]);
            if (typeof query[first] == "undefined") query[first] = second;
            else if (query[first] instanceof Array) query[first].push(second);
            else query[first] = [query[first], second];
      
          }
          return query;
        }