selectDOM操作详解-select option详细解释
首先从一个面试题来讲,我最近在做前端面试题,题目如下:
完成函数showlmg(),要求能够动态根据下拉列表的选项变化,更新图片的显示
<body>
<script type="text/javascript">
function showImg (oSel) {
};
</script>
<img id="pic" src="img1.jpg" width="200" height="200">
<br/>
<select id="sel" onchange="showImg(this)">
<option value="img1">城市生活</option>
<option value="img2">都市早报</option>
<option value="img3">青山绿水</option>
</select>
</body>
我就顺便找了下有关select的DOM操作方法,发现有的是错的,所以还是得自己动手操作啊
首先基础:
//增加一个新的option:
</script>
<select id="add" style="width:100px;height:30px;font-size: 24px;">
<option value="qi">qi</option>
<option value="test1" selected="true">test</option>
</select>
addValue:<input type="text" id="addValue"/> addText:<input type="text" id="addText"/>
<button id="addOption">addOption</button>
<button id="delOption">delOption</button>
<script>
var add=document.querySelector('#add');
var addOption=document.querySelector('#addOption');
var delOption=document.querySelector('#delOption');
var addValue=document.querySelector('#addValue');
var addText=document.querySelector('#addText');
//获取select#add下的所有option
var allOptions=add.getElementsByTagName('option');
console.log(add.value);//当前选中的option的value值
console.log(add.selectedIndex);//当前选中的option的index索引
console.log(add.options[add.selectedIndex].innerHTML);
console.log(add.options[add.selectedIndex].text);//当前选中的option的text值
addOption.onclick=function(){
//创建一个新的option并赋值
var flag=true;
//这里对addText还可以进行更详细的内容控制,可以用正则进行处理
if(addText.value==''){
addText.setAttribute("placeholder","addText不能为空");
}else{
//将新创建的option添加进select列表
for(var i=0;i<allOptions.length;i++){
if(allOptions[i].text==addText.value){
flag=false;
break;
}else{
flag=true;
}
}
if(flag==true){
var newOption=new Option(addText.value,addValue.value);
add.options.add(newOption);
console.log('添加成功');
}else{
console.log("addText不能重复");
}
}
}
delOption.onclick=function(){
for(var i=0;i<allOptions.length;i++){
if(allOptions[i].selected==true){//如果当前元素被选中
add.options.remove(allOptions[i]);
}
}
}
</script>
//下面回到最初的面试题,相信你也可以想到不同的几个思路吧,那么我尝试几个思路吧
<img id="pic" src="img1.jpg" width="200" height="200" alt="img1.jpg"/>
<br/>
<select id="sel" onchange="showImg(this);">
<option value="img1">城市生活</option>
<option value="img2">都市早报</option>
<option value="img3">青山绿水</option>
</select>
<script>
var pic=document.querySelector('#pic');
var sel=document.querySelector('#sel');
function showImg (oSel) {
pic.src=oSel.options[oSel.selectedIndex].value+'.jpg';
pic.alt=oSel.options[oSel.selectedIndex].value+'.jpg';
};
</script>
selectDOM操作详解-select option详细解释的更多相关文章
- [Android新手区] SQLite 操作详解--SQL语法
该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法 :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...
- MySQL 操作详解
MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...
- ORM 对表操作 详解
目录 ORM对表操作详解 表结构 ORM对表的 增 删 改 查 基于对象的跨表查询 -- 类似于子查询 基于双下划的跨表查询 -- 连表 join ORM对表的操作示例 正向查 与 反向查 relat ...
- spring配置文件详解--真的蛮详细
spring配置文件详解--真的蛮详细 转自: http://book.51cto.com/art/201004/193743.htm 此处详细的为我们讲解了spring2.5的实现原理,感觉非常 ...
- Java 序列化Serializable详解(附详细例子)
Java 序列化Serializable详解(附详细例子) 1.什么是序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- VC++常用数据类型及其操作详解
原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...
- keepalived的配置详解(非常详细)
keepalived的配置详解(非常详细) 2017-01-22 15:24 2997人阅读 评论(0) 收藏 举报 分类: 运维学习(25) 转载自:http://blog.csdn.net ...
- Git远程操作详解(转)
转自:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git远程操作详解 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的 ...
随机推荐
- 四、Angular新建组件和使用
1.新建组件命令 ng component 组件路径 如果报错换成 ng generate component 组件路径 2.组件 ts 文件详解 3.组件会自动引入到app.mudule.ts里面 ...
- 读取的CSV
- BZOJ1822 [JSOI2010]Frozen Nova 冷冻波 二分+最大流
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1822 题解 好久没做网络流的,都没有想到网络流... 首先暴力判断一下一个巫妖和一个精灵之间能 ...
- MySQL-触发案列
1.更新案例 DELIMITER $$ USE `haochacang`$$ DROP TRIGGER /*!50032 IF EXISTS */ `customer_info_update`$$ C ...
- maven插件之maven-surefire-plugin,junit单元测试报告和sonar测试覆盖率的整合说明
POM中配置的如下: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId> ...
- js-ifelse-奇技淫巧
我们有A,B,C,D四个不同的类别,在最开始的时候只有三个类别,并且两个类别是做同样的事: function categoryHandle(category) { if(category !== 'A ...
- APP定位元素几种方法
APP元素定位和操作 webdriver 提供了八种元素定位方法: 在 Python 语言中对应的定位方法如下:find_element_by_id()find_element_by_name()fi ...
- SQL_2008安装教程(完整版)
Win 7 win xp系统中SQL2008安装注意事项一:SQL2008 镜像下载地址 http://download.microsoft.com/download/4/C/4/4C402E48-0 ...
- BUUCTF | MD5
题目:e00cf25ad42683b3df678c61f42c6bda flag{admin1} 算是一个资源收集吧,Orz,https://www.cmd5.com/
- MySQL操作数据库值mysql事务
创建一个无参数的事务 注意要写START TRANSACTION或者是Begin;Mysql会默认直接执行一个单元 MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可 ...