我想使用switch语句显示所选项目的价格值

时间:2018-01-25 07:01:44

标签: javascript

	<!DOCTYPE html>
	<html>
	   <head>
		  <meta http-equiv="content-type" content="text/html;charset=utf-8">
		  <title>Switch Statement and Labeled Break</title>
		  <script>
			 addEvent(window, ‘load’, initialize);
			 function initialize()
			 {
			 // add an event to the drop down list
			 addEvent(document.getElementById(’chips’), ‘change’, getPrice);
			 }
			 function product(name, price)
			 {
			 this.name = name;
			 this.price = price;
			 }
			 var ICs = new Array();
			 ICs[0] = new product("Septium 900MHz", "$149");
			 ICs[1] = new product("Septium Pro 1.0GHz", "$249");
			 ICs[2] = new product("Octium BFD 750MHz", "$329");
			 var snacks = new Array();
			 snacks[0] = new product("Rays Potato Chips", "$1.79");
			 snacks[1] = new product("Cheezey-ettes", "$1.59");
			 snacks[2] = new product("Tortilla Flats", "$2.29");
			 // lookup in the ‘table’ the cost associated with the product
			 function getPrice()
			 {
			 var chipName = this.options[this.selectedIndex].text;
			 var chipType = this.options[this.selectedIndex].value;
			 var outField = document.getElementById(’cost’);
			 master:
			 switch(chipType)
			 {
			 case "ICs":
			   for (var i = 0; i < ICs.length; i++)
			   {
				  if (ICs[i].name == chipName)
				  {
					 outField.value = ICs[i].price;
					 break master;
				  }
			 }
			   break;
			 case "snacks":
			   for (var i = 0; i < snacks.length; i++)
			   {
				  if (snacks[i].name == chipName)
				  {
					 outField.value = snacks[i].price;
					 break master;
				  }
			 }
			 
				 }
			   break;
			 default:
			 outField.value = "Not Found";
			 }
				 }
			 
			 
			 
			 
			 
		  </script>
	   </head>
	   <body>
		  <h1>Switch Statement and Labeled Break</h1>
		  <p>Select a chip for lookup in the chip price table:</p>
		  <form id="theForm">
			 <p>
				<label for="chips">Chip:</label>
				<select id="chips">
				   <option></option>
				   <option value="ICs">Septium 900MHz</option>
				   <option value="ICs">Septium Pro 1.0GHz</option>
				   <option value="ICs">Octium BFD 750MHz</option>
				   <option value="snacks">Rays Potato Chips</option>
				   <option value="snacks">Cheezey-ettes</option>
				   <option value="snacks">Tortilla Flats</option>
				   <option>Poker Chipset</option>
				</select>
				<label for="cost">&nbsp; Price:</label>
				<input type="text" id="cost" size="10">
			 </p>
		  </form>
	   </body>
	</html>

//在上面的代码片段中,我试图显示所选芯片的价格,但输入字段中没有显示价格。我已经附加了输出屏幕截图。我已经构建了两个带有自定义对象的数组,模拟两个数据库表。 我还定义了一个函数getPrice来关联与产品相关的价格。 提前致谢 output screenshot

2 个答案:

答案 0 :(得分:1)

这很有效。

<!DOCTYPE html>
 <html>
   <head>
       <meta http-equiv="content-type" content="text/html;charset=utf-8">
       <title>Switch Statement and Labeled Break</title>
       <script>
            window.onload = initialize;

            function initialize()
            {
                document.getElementById('chips').addEventListener('change', getPrice);
            }
            function product(name, price)
            {
               this.name = name;
               this.price = price;
            };

            var ICs = new Array();
            ICs[0] = new product("Septium 900MHz", "$149");
            ICs[1] = new product("Septium Pro 1.0GHz", "$249");
            ICs[2] = new product("Octium BFD 750MHz", "$329");

            var snacks = new Array();
            snacks[0] = new product("Rays Potato Chips", "$1.79");
            snacks[1] = new product("Cheezey-ettes", "$1.59");
            snacks[2] = new product("Tortilla Flats", "$2.29");

            function getPrice()
            {
                var selectelem = document.getElementById("chips"), outField = document.getElementById('cost'), outvalue="";;
                var chipName = selectelem.options[selectelem.selectedIndex].text;
                var chipType = selectelem.value;
                if(!chipType)
                {
                    outField.value = ""; return;
                }
                switch(chipType)
                {
                    case "ICs":
                        var arr = ICs.filter(function(item){
                            return item.name == chipName;
                        });
                        outvalue = arr[0].price;
                        break;
                    case "snacks":
                        var arr = snacks.filter(function(item){
                            return item.name == chipName;
                        });
                        outvalue = arr[0].price;
                        break;
                    default: outvalue = "Not Found"; break;
                }
                outField.value = outvalue;
            }
       </script>
    </head>
    <body>
       <h1>Switch Statement and Labeled Break</h1>
       <p>Select a chip for lookup in the chip price table:</p>
       <form id="theForm">
          <p>
             <label for="chips">Chip:</label>
             <select id="chips">
                <option></option>
                <option value="ICs">Septium 900MHz</option>
                <option value="ICs">Septium Pro 1.0GHz</option>
                <option value="ICs">Octium BFD 750MHz</option>
                <option value="snacks">Rays Potato Chips</option>
                <option value="snacks">Cheezey-ettes</option>
                <option value="snacks">Tortilla Flats</option>
                <option value="signals">TCP</option>
                <option value="computer">Poker Chipset</option>
             </select>
             <label for="cost">&nbsp; Price:</label>
             <input type="text" id="cost" size="10">
</p> </form>
    </body>
 </html>

答案 1 :(得分:0)

开关错误。应该是这样的:

        switch (chipType) {
            case "ICs":
                for (var i = 0; i < ICs.length; i++) {
                    if (ICs[i].name == chipName) {
                        outField.value = ICs[i].price;
                        break master;
                    }
                }
                break;
            case "snacks":
                for (var i = 0; i < snacks.length; i++) {
                    if (snacks[i].name == chipName) {
                        outField.value = snacks[i].price;
                        break master;
                    }
                }
            break;
            default:
                outField.value = "Not Found";
                break;
        }

您可以使用addEventListener而不是AddEvent。例如:

        var chips = document.getElementById('chips');
        chips.addEventListener('change', getPrice);