动态给select添加项目

web开发中,经常需要给select动态添加数据,常用的方法有几种:
1.基于dom方式的添加
2.使用innerHTML添加
3.object方式添加

案例:页面上有一个select标签,他的option是空的,还有一个按钮,现在点击按钮,动态给select标签添加option选项(选项的值我们可以通过一个数组来模拟)

<html>
<head>
<script type="text/javascript">

var city = new Array();
city[0 ]= "西安" ;
city[1 ]= "乌鲁木齐" ;
city[2 ]= "西宁" ;
city[3 ]= "北京" ;

//使用object方式
function objectF()
{

var s = document.getElementById("object");
for(var i=0;i<city.length;i++)
{
var option = new Option(city[i],i);
s.options[i]=option;

}

}

//使用dom方式
function domF()
{

var s = document.getElementById("dom" );

removeOptions(s);

for (var i= 0 ;i<city.length;i++)
{
var option = document.createElement("option" );
var text = document.createTextNode(city[i]);
option.appendChild(text);
option.value=i;
s.appendChild(option);

}
}

//添加选项前先移出以前的选项,这样做的目的是为了防止用户反复添加(原因是使用了createElement属性)
function removeOptions(selectObj)
{
if (typeof selectObj != 'object')
{
selectObj = document.getElementById("dom");
}
// 原有选项计数
var len = selectObj.options.length;
for (var i=0; i < len; i++)
{
//移除当前选项
selectObj.options[0] = null;
}
}

</script>
</head>
<body>

<table>
<tr>
<td>
<select id="dom" style="width: 55" οnchange="alert(options[selectedIndex].text);"></</select>
</td>
<td>
<select id="object" style="width: 55" οnchange="alert(options[selectedIndex].text);"></</select>
</td>
</tr>
<td><input type="button" value= "dom" οnclick="domF()"></td> <td><input type="button" value= "object" οnclick="objectF()"></td>
</tr>
</table>
<br>

//这个例子是为了显示如何得到select的 选择那个选项(value),和那个选项的值(text)的方法.
<select οnchange="alert(this.options[this.selectedIndex].value)"> //this可以写,也可以不写,在这里指这个对象
<option value="ww">我在说- 博客</option>
<option value="ff" selected>博客 - 我在说</option>
</select>

</body>
</html>

显示效果:

 

 

 

使用innerHTML的方式没有测试成功,主要是应为在拿到select对象后,不能使用innerHTML方法在添加"select"字符串,如果这样做会报错.谁又好的方法发上来看看

 

案例2: cuv统一客户视图 项目中使用到的 :有两个select标签,一个是年,一个是月,初时化是根据当前时间来显示年月,当用户点击某年时候,动态显示月份,这里我们要用到DOM知识,初始化的时候只有两年,一个是系统当年的年份,一个是系统当前的年份-1)

 

先看看效果:

 

 

思路:当选择某年的时候,如果是当前年,则在月份中显示1月到当前月,如果是去年,则显示1月到12,主要是给第一个selcet标签写一个onchenge()事件,每次先清空第二个select标签,根据第一个标签的value值来确定第二个标签所显示的月份,用到一个清空select标签的option选项的函数removeOptions()

 

 

 

test.html的代码如下:

 

 

<html>  

<head>

<title>测试页面</title>

</head> 

<script type="text/javascript">

 

 

//初始化函数

 

function init()

{

var localetime=new Date();

var year=localetime.getYear();

var yearTemp=year;

var month=localetime.getMonth()+1;

alert(month);

var length=month;

var showmonth=new Array();

var s = document.getElementById("month"); 

var lengthTag=s.length;

 

//显示当前年有几个月份,作为option选项添加在月份select标签下

 

for  (var i=0;i<length;i++)

 

{  

showmonth[i]=month--;

var optionM = document.createElement("option"); 

var textM = document.createTextNode(showmonth[i]);  

optionM.appendChild(textM);  

 

s.appendChild(optionM);

 

}

//给年select标签下添加option选项

 

var s1 = document.getElementById("year" );

 

for(var j=0;j<2;j++)

{

var optionY=document.createElement("option");

var textY = document.createTextNode(year--);

optionY.appendChild(textY);

optionY.value=j+1;  

s1.appendChild(optionY);

 

}

 

 

}

function changeMonth(sel)

{

 

 

var localetime=new Date();

var year=localetime.getYear();

var yearTemp=year;

var month=localetime.getMonth()+1;

var length=month;

var showmonth=new Array();

 

 

 

if(sel.options[sel.selectedIndex].value==2)

{

 

var optionM=sel.nextSibling.nextSibling;

 

 

removeOptions(optionM);

 

var monthvalue=12;

for(var n=0;n<12;n++)

{

 

var optionMonth = document.createElement("option");

 

var textM = document.createTextNode(monthvalue--);

 

optionMonth.appendChild(textM);

optionM.appendChild(optionMonth);

 

 

}

 

}

else if(sel.options[sel.selectedIndex].value==1)

{

var optionM2=sel.nextSibling.nextSibling;

removeOptions(optionM2);

var monthvalue2=month;

for(var p=0;p<month;p++)

{

var optionMonth2 = document.createElement("option");

var textM2 = document.createTextNode(monthvalue2--);

optionMonth2.appendChild(textM2);

optionM2.appendChild(optionMonth2);

}

 

}

}

 

//移出月的option选项

function removeOptions(selectObj)

{

 

//原有选项计数

var len = selectObj.options.length;

for (var i=0; i < len; i++)

{

// 移除当前选项

selectObj.options[0] = null;

 

}

 

}

 

//当点击查询按钮,显示年,在显示月,在显示月和年组成的字符串,月为1为数字的时候还用加 "0" 凑成两位

function query(btn)

{

 

//  这里用到DOM,yearObj 是相对于btn的父节点的第一个孩子节点

 

var yearObj = btn.parentNode.firstChild;

var year=yearObj.options[yearObj.selectedIndex].text;

alert(year);

 

//monthObj 节点是yearObj节点的第2个兄弟节点,因为两个select标签中间又换行,可以看下两个select标签的书写代码,如果没有换行,则可以只用一个nextSibling,这里特别要注意到换行,空格也是一个节点,只不过它是空的节点

 

var monthObj = yearObj.nextSibling.nextSibling;

 

var month = monthObj.options[monthObj.selectedIndex].text;

alert(month);

if(month.length==1)

{

month=0+month;

}

var date=year+month;

 

alert(date);

}

 

 

 

</script>  

<body οnlοad="init()">

<table border="1">

<tr>

<td>

<select name="year" οnchange="changeMonth(this)" style="width: 55">

</select>

<select name="month" style="width: 40">

</select>

<input  type="button" name="queryByDate" οnclick="query(this)" value="查 询"/>

</td>

</tr>

</table>

 

</body>

</html>

 

 

 

 最终效果:

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,关于为 Java 项目添加预约功能的代码,需要先了解您的具体需求以及项目结构和实现方式。预约功能可以涉及到用户信息、时间、预约内容等等,而不同的项目结构和实现方式也会有所不同。以下提供一些可能有帮助的思路和代码示例,仅供参考。 1. 普通预约功能的代码示例: ```Java import java.util.Date; import java.util.HashMap; import java.util.Map; public class Reservation { private Map<Date,String> reservationMap = new HashMap<>(); // 添加预约记录 public boolean addReservation(Date date, String content) { if (reservationMap.containsKey(date)) { // 时间已经被占用 return false; } else { reservationMap.put(date, content); // 预约成功 return true; } } // 取消预约 public boolean cancelReservation(Date date) { if (reservationMap.containsKey(date)) { reservationMap.remove(date); // 取消成功 return true; } else { // 无该预约记录 return false; } } // 查询预约 public String queryReservation(Date date) { if (reservationMap.containsKey(date)) { return reservationMap.get(date); } else { // 无该预约记录 return ""; } } } ``` 2. 使用数据库存储预约信息的代码示例: ```Java import java.sql.*; public class Reservation { private static String url = "jdbc:mysql://localhost:3306/reservation_system"; private static String username = "root"; private static String password = "123456"; // 添加预约记录 public static boolean addReservation(Date date, String content) { boolean result = false; try (Connection conn = DriverManager.getConnection(url, username, password)) { String sql = "INSERT INTO reservation (date, content) VALUES (?, ?)"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setDate(1, date); stmt.setString(2, content); int rows = stmt.executeUpdate(); if (rows > 0) { result = true; } } catch (SQLException e) { e.printStackTrace(); } return result; } // 取消预约 public static boolean cancelReservation(Date date) { boolean result = false; try (Connection conn = DriverManager.getConnection(url, username, password)) { String sql = "DELETE FROM reservation WHERE date = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setDate(1, date); int rows = stmt.executeUpdate(); if (rows > 0) { result = true; } } catch (SQLException e) { e.printStackTrace(); } return result; } // 查询预约 public static String queryReservation(Date date) { String content = ""; try (Connection conn = DriverManager.getConnection(url, username, password)) { String sql = "SELECT content FROM reservation WHERE date = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setDate(1, date); ResultSet rs = stmt.executeQuery(); if (rs.next()) { content = rs.getString("content"); } } catch (SQLException e) { e.printStackTrace(); } return content; } } ``` 以上代码仅为示例,可能需要根据具体需求进行修改和完善。如有问题或需要进一步帮助,请随时联系我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值