`
8366
  • 浏览: 813093 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

动态给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" onchange="alert(options[selectedIndex].text);"></</select>
</td>
<td>
<select id="object" style="width: 55" onchange="alert(options[selectedIndex].text);"></</select>
</td>
</tr>
<td><input type="button" value= "dom" onclick="domF()"></td> <td><input type="button" value= "object" onclick="objectF()"></td>
</tr>
</table>
<br>

//这个例子是为了显示如何得到select的 选择那个选项(value),和那个选项的值(text)的方法.
<select onchange="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 onload="init()">

<table border="1">

<tr>

<td>

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

</select>

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

</select>

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

</td>

</tr>

</table>

 

</body>

</html>

 

 

 

 最终效果:

 

 

 

 

分享到:
评论

相关推荐

    向元素中动态添加option

    这篇博客“向&lt;select&gt;元素中动态添加option”探讨的就是如何在JavaScript或jQuery的帮助下,实现在用户界面中动态地向`&lt;select&gt;`元素添加选项。 JavaScript是一种广泛使用的客户端脚本语言,它可以操作HTML元素,...

    select下拉框添加搜索功能

    在实际项目中,`select`选项可能来源于服务器,这时可以使用AJAX动态加载数据,然后利用`editable-select`的API进行更新。 总的来说,"select下拉框添加搜索功能"是提高用户交互体验的重要手段。通过原生方法或第...

    jQGrid动态填充select下拉框的选项值(动态填充)

    `dataInit`可以用于初始化多选下拉框,并添加动态选项。 6. **事件处理**:在某些情况下,你可能需要在表格加载后或单元格编辑时动态填充下拉框。可以监听`loadComplete`或`beforeEditCell`事件,根据需要进行填充...

    Ant design vue中的a-select在动态给option赋值之后,placeholder失效.pdf

    在实际开发过程中,我们可能会遇到一个常见问题,即当动态地给`a-select`的`option`赋值后,其`placeholder`属性失效,不再显示默认提示文本。这个问题通常出现在数据异步加载的情况下,比如从服务器获取数据并填充...

    jquery 动态select实现

    在实际应用中,我们可以根据项目需求选择合适的方式实现动态`select`,并利用这类插件来提升用户体验。 总之,利用jQuery实现动态`select`是提高网页交互性的常用技巧。通过选择、清除、添加选项以及监听和响应用户...

    select级联框 js json 全动态

    3. **动态生成select**:在JavaScript中,可以使用`document.createElement('select')`创建一个新的select元素,然后使用`appendChild()`方法将其添加到页面上的某个位置。接着,可以通过循环遍历JSON数据,为每个...

    使用select2实现下拉列表动态模糊查询

    如果你需要进一步定制Select2的行为,可以传递一个配置对象给初始化函数。例如,如果你想改变搜索的最小字符数,可以这样设置: ```javascript $('.js-data-example-instance').select2({ minimumInputLength: 2 /...

    select 横向滚动条

    在JSP中,我们可以使用EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)来动态生成`&lt;select&gt;`元素,包括其选项。例如: ```jsp &lt;select id="exampleSelect"&gt; ${optionsList}" var=...

    select 增加搜索框

    标题“select增加搜索框”和描述中提到的“在select框中添加新的样式searchClass”,正是针对这个需求的一种解决方案。 要实现带有搜索功能的`select`框,一种常见的方法是使用第三方库,例如`Chosen`插件。`Chosen...

    select下拉列表显示图片内容

    有许多现成的JavaScript库和插件,如`Chosen`、`Select2`、`Optgroup`等,它们扩展了`select`元素的功能,支持在选项中添加图片。这些插件通常提供了丰富的API和自定义选项,可以方便地与现有的项目集成。 3. **...

    select option带自定义图片

    以下是一个关于如何在`&lt;select&gt;`和`&lt;option&gt;`中添加自定义图片的详细教程。 首先,我们需要理解HTML基础。`&lt;select&gt;`元素创建一个可选列表,用户可以选择其中的一个或多个选项。`&lt;option&gt;`元素定义了下拉列表中的一...

    关于jquery中动态增加select,事件无效的快速解决方法

    然而,有时我们可能会遇到一个问题,即使用`bind`方法为动态添加的`select`元素绑定事件时,这些事件并未生效。这是因为`bind`只对在绑定事件时已经存在于DOM中的元素起作用,而不会对后续添加的元素产生影响。 ...

    实现select各种搜索功能

    首先,在`&lt;select&gt;`旁边添加一个输入框: ```html 搜索选项..."&gt; ``` 接着,编写JavaScript代码来处理搜索逻辑。以下是一个简单的例子,当用户在输入框中输入文字时,会隐藏所有不匹配搜索关键词的选项: ```...

    前端项目-country-select-js.zip

    例如,增加自定义国旗图标、实现动态加载国家数据、添加实时地理定位功能等。同时,优化性能,如使用懒加载减少首屏加载时间,也是提升用户体验的关键。 总结,`country-select-js`是一个强大且灵活的前端工具,它...

    前端项目-tether-select.zip

    《基于Tether构建的可定制化选择元素:前端项目-tether-select》 在现代Web开发中,前端界面的用户体验和交互性是至关重要的。本文将深入探讨一个名为“tether-select”的前端项目,它旨在为开发者提供一种风格化且...

    实现可编辑的select

    这个功能特别适用于需要动态添加或编辑选项的场景,如创建自定义联系人列表、管理标签等。需要注意的是,由于Editable Select插件是在原生`select`元素上进行增强,因此在不支持JavaScript的环境中,仍然可以使用...

    Vue+Element实现动态生成新表单并添加验证功能

    本文主要阐述了如何使用Vue.js和Element UI来实现表单的动态生成,并为这些动态生成的表单添加了验证功能。 知识点一:Vue.js框架基础 Vue.js是一个构建用户界面的渐进式JavaScript框架,核心库仅关注视图层,易于...

    select各种效果:select带搜索框 多个option项目选择

    因此,开发者开始寻找方法来增强其功能,比如添加搜索框以及支持多个option项目的选取。 **1. 带搜索框的Select** 在大型数据集或选项过多的情况下,为`&lt;select&gt;`添加搜索框功能是非常实用的。这可以帮助用户快速...

    jQuery模拟Select下拉菜单选中添加代码.zip

    通过模拟Select,我们可以自由控制下拉列表的显示、隐藏,甚至可以实现动态加载和异步更新。 首先,`index.html`文件是整个项目的入口,它包含了HTML结构。在HTML中,我们通常会创建一个无实际选项的Select元素,...

    bootstrapvalidator表单验证 +select2 拼音模糊匹配 demo

    BootstrapValidator通常在表单元素上添加验证规则,而select2则需要绑定到&lt;select&gt;元素上,设置其数据源和搜索功能。 以下是一个简单的代码示例: ```html &lt;!DOCTYPE html&gt; ...

Global site tag (gtag.js) - Google Analytics