在Jquery和List中切换语句

我想知道我的方法是否有效和正确。 我的代码不工作,我不知道为什么。

      $(document).ready(function() { function HotelQuery(HotelName) { switch (HotelName) { case 'TimelessHotel': var strHotelName = 'Timeless Hotel'; var strHotelDesc = 'Hotel Description Timeless Hotel'; var strHotelPrice = ['980.00', '1,300.00', '1,600.00', '1,500.00', '1,800.00', '300.00', '150.00', '200.00']; var strHotelRoomType = ['Single Room', 'Delux Room','Twin Room', 'Matrimonial Room', 'Presidential Suites', 'Extra Bed', 'Free Breakfast', 'Extra Person']; ; //end Timeless Hotel case 'ParadiseInn': var strHotelName = 'Paradise Inn'; var strHotelDesc = 'Hotel Description Paradise Inn'; var strHotelPrice = ['980.00', '1,300.00', '1,600.00', '1,500.00', '1,800.00', '300.00', '150.00', '200.00']; var strHotelRoomType = ['Single Room', 'Delux Room','Twin Room', 'Matrimonial Room', 'Presidential Suites', 'Extra Bed', 'Free Breakfast', 'Extra Person']; ; //end Paradise Inn case 'TetrisHotel': var strHotelName = 'Tetris Hotel'; var strHotelDesc = 'Hotel Description Tetris Hotel'; var strHotelPrice = ['980.00', '1,300.00', '1,600.00', '1,500.00', '1,800.00', '300.00', '150.00', '200.00']; var strHotelRoomType = ['Single Room', 'Delux Room','Twin Room', 'Matrimonial Room', 'Presidential Suites', 'Extra Bed', 'Free Breakfast', 'Extra Person']; ; //end Tetris Hotel case 'JamstoneInn': var strHotelName = 'Jamstone Inn'; var strHotelDesc = 'Hotel Description Jamstone Inn'; var strHotelPrice = ['980.00', '1,300.00', '1,600.00', '1,500.00', '1,800.00', '300.00', '150.00', '200.00']; var strHotelRoomType = ['Single Room', 'Delux Room','Twin Room', 'Matrimonial Room', 'Presidential Suites', 'Extra Bed', 'Free Breakfast', 'Extra Person']; ; //end Jamstone Inn } }; });  hotel query   Tetris Hotel Query   

您的代码不起作用,因为变量的范围是函数HotelQuery 。 我认为您可能想要做的是返回一个具有该函数属性的对象,并使用不显眼的JavaScript方法将click事件处理程序绑定到元素。

就像是

 $(function() { $('a').click(function() { var hotel = HotelQuery('TetrisHotel'); alert(hotel.name) // alerts 'Tetris Hotel' }); }); function HotelQuery(HotelName) { var strHotelName; var strHotelDesc; var strHotelPrice; var strHotelRoomType; switch (HotelName) { case 'TimelessHotel': strHotelName = 'Timeless Hotel'; strHotelDesc = 'Hotel Description Timeless Hotel'; strHotelPrice = ['980.00', '1,300.00', '1,600.00', '1,500.00', '1,800.00', '300.00', '150.00', '200.00']; strHotelRoomType = ['Single Room', 'Delux Room','Twin Room', 'Matrimonial Room', 'Presidential Suites', 'Extra Bed', 'Free Breakfast', 'Extra Person']; break; //end Timeless Hotel case 'ParadiseInn': strHotelName = 'Paradise Inn'; strHotelDesc = 'Hotel Description Paradise Inn'; strHotelPrice = ['980.00', '1,300.00', '1,600.00', '1,500.00', '1,800.00', '300.00', '150.00', '200.00']; strHotelRoomType = ['Single Room', 'Delux Room','Twin Room', 'Matrimonial Room', 'Presidential Suites', 'Extra Bed', 'Free Breakfast', 'Extra Person']; break; //end Paradise Inn case 'TetrisHotel': strHotelName = 'Tetris Hotel'; strHotelDesc = 'Hotel Description Tetris Hotel'; strHotelPrice = ['980.00', '1,300.00', '1,600.00', '1,500.00', '1,800.00', '300.00', '150.00', '200.00']; strHotelRoomType = ['Single Room', 'Delux Room','Twin Room', 'Matrimonial Room', 'Presidential Suites', 'Extra Bed', 'Free Breakfast', 'Extra Person']; break; //end Tetris Hotel case 'JamstoneInn': strHotelName = 'Jamstone Inn'; strHotelDesc = 'Hotel Description Jamstone Inn'; strHotelPrice = ['980.00', '1,300.00', '1,600.00', '1,500.00', '1,800.00', '300.00', '150.00', '200.00']; strHotelRoomType = ['Single Room', 'Delux Room','Twin Room', 'Matrimonial Room', 'Presidential Suites', 'Extra Bed', 'Free Breakfast', 'Extra Person']; break; //end Jamstone Inn } return { name: strHotelName, desc: strHotelDesc, price: strHotelPrice, roomType: strHotelRoomType } }; 

只是注意到你每次都返回除了酒店名称和描述之外的相同值(你可能只是作为一个例子,我不确定) 。 您可以将所有变量的值分配给声明(或将值指定为返回对象的属性),而不是酒店名称和描述,您可以从参数HotelName的参数值中指定。 就像是

 function hotelQuery(hotelName) { return { name: hotelName, desc: 'Hotel Desciption' + hotelName, // Keep prices as numbers and have a function to display them // in the culture specific way. Numbers for prices will be easier to deal with price: [980, 1300, 1600, 1500, 1800, 300, 150, 200], roomType: ['Single Room', 'Delux Room','Twin Room', 'Matrimonial Room', 'Presidential Suites', 'Extra Bed', 'Free Breakfast', 'Extra Person'] } } 

几个问题。

1)函数不需要在$(document).ready ,摆脱它。


2)每个案例陈述应该是break ,而不是单独; 。 例如:

 function HotelQuery(HotelName) { switch (HotelName) { case 'TetrisHotel': // stuff goes here ... break; //end Tetris Hotel }; } 

3) alert不应该跟在你的onclick处理程序中:

 alert: (strHotelName, strHotelDesc, strHotelPrice); 

应该

 alert(strHotelName, strHotelDesc, strHotelPrice); 

此外, alert只需要一个参数,因此您需要将其分解:

 alert(strHotelName); alert(strHotelDesc); alert(strHotelPrice); 

3)您假设strHotelNamestrHotelDescstrHotelPrice属于全球范围,但它们并非如此。


总而言之,您可能想尝试这样的事情:

       hotel query   Tetris Hotel Query 

 alert("myVar1= " + myVar1 +"/n"+ "myVar2= " + myVar2); 

在警告框中将字符串放置在字符串的一侧将允许您在警告框中显示具有漂亮换行符的多个变量。

 myVar1= Data myVar2= more Data 

我做了一些改变。

HotelQuery函数从ready函数中拉出来。

其次,所有这些变量都会在您进行警报呼叫时超出范围。 如果您希望它们在范围内,请在全局范围内(在您的函数之外)声明它们并将它们设置在函数内部。

 var name; function doStuff() { name = "reggie"; }