之前写了js checkbox.checked=true在document.body.appendChild(checkbox)前与后赋值,提到如果想改变元素的视觉效果(checkbox.checked=true会打钩),请在把元素添加到页面上再为其赋值,否则赋值无效。下拉框元素也有这样的问题,比如在设置其selectedIndex属性时,会看到当前被选中的Item,浏览器重新绘画了这个元素。在某些情况下会出现这样的情况:用insertBefore方法添加了多个选项后,设置其selectedIndex不能起到效果,用options.add则不会。他们到底有什么区别呢?

测试代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
</head>
<body onload="f()">
<select id="s">
    
</select>
</body>

<script>
function f(){
    for(var i=0; i<10; i++){
        var option = document.createElement('option')
        //s.insertBefore(option)
        s.options.add(option)
        option.innerText = 'hello' + i
        option.value = i
    }
    s.selectedIndex = 4
}
</script>
</html>

总结:这也算一个有点奇妙的问题吧。

select元素的options.add 与 insertbefore的区别相关推荐

  1. select元素javascript常用操作(转载)

    /*------------------------------------------------------  *作者:xieyu @ 2007-08-14  *语言:JavaScript  *说 ...

  2. JS 对select动态添加options操作[IEFireFox兼容]

    JS 对select动态添加options操作[IE&FireFox兼容] 做一个项目,遇到了要动态调整 select 选项的情况,就baidu了一下,发现了一篇与本文同名的帖子. 但是呢,那 ...

  3. 改变select元素原来的事件属性,并加快捷键

    <select name="commonNativeLanguage" style="width:150px"οnkeydοwn="select ...

  4. 原生js操作元素类名—classList.add()、classList.remove()、classList.contains()、classList.toggle()

    原生js操作元素类名 classList.add( newClassName ): classList.toggle( className ): classList.remove( oldClassN ...

  5. MyBatis-03 MyBatis XML方式之select元素

    概述 select用法 根据用户id查询用户信息 1.UserMapper接口中添加接口方法 2. UserMapper.xml中配置resultMap和select元素 查询全部的SysUser 添 ...

  6. Jquery操作表单Select元素常用方法

    Jquery操作表单Select元素的用法: jQuery获取Select元素,并选择的Text和Value: 实例分析: 1. $("#select_id").change(fu ...

  7. 【笔记】css 自定义select 元素的箭头样式

    原文链接:https://www.imooc.com/qadetail/187585?t=281881 最近项目需要自定义select 元素的样式,搜索了一下发现了通过设置select 元素 css ...

  8. 不要在foreach循环里进行元素的remove/add操作。remove元素请使用iteratot方式,如果并发操作,需要对Iterator对象加锁

    不要在foreach循环里进行元素的remove/add操作.remove元素请使用iteratot方式,如果并发操作,需要对Iterator对象加锁

  9. mybatis 取查询值_Mybatis --- 映射文件、参数处理、参数值的获取、select元素

    这样就可以在insert函数中获取新添加的用户的 id主键,否则获取不到 select * from student where id = #{id} insert into student(name ...

最新文章

  1. 【连载】优秀程序员的45个习惯之42——允许大家自己想办法
  2. SVM中为何间隔边界的值为正负1
  3. 从零开始搭建系统1.1——CentOs安装
  4. 免费公开课 | AI对抗攻防系列专题,今晚7点第一讲
  5. 两个线程,一个线程打印1~52,另一个线程打印字母A-Z,打印顺序为12A34B56C……5152Z...
  6. python 函数式编程包_python 函数支持函数式编程的包operator partial
  7. 求ax bx c 0的根c语言,关于求方程ax2+bx+c=0根的问题
  8. SP2010开发和VS2010专家食谱--第六章节--Web Services和REST(5)--Inserting new contacts through REST...
  9. Java编译器调试不了_使用Maven设置Java编译器的-source和-target-不起作用
  10. java集合的存储特征_Java集合常用类特点整理
  11. 无锡美景:踏过樱花第几桥
  12. VS2010格式化快捷键
  13. Linuxbt下载工具-Transmission-支持命令行
  14. 转载:子网掩码以及子网划分
  15. QQ抢车位助手(结尾)
  16. 2022年N1叉车司机考试题库及N1叉车司机证考试
  17. 吃完饭后,到底是躺着、坐着、站着还是运动?看完终于不纠结了
  18. Unity 在2D中实现LookAt
  19. Django笔记:应用和分布式路由(应用创建,分布式路由的配置,应用下的模板)
  20. 前端面试题总结(包含答案解析)

热门文章

  1. php array in array,浅谈PHP array_search 和 in_array 函数效率问题
  2. 【合并区间】排序 + 双指针
  3. c++中组数的替代方案
  4. linux删除最后一个字符串,Bash删除字符串中的第一个和最后一个字符
  5. 【项目管理】沟通管理
  6. window.location跳转页面
  7. Vue+Leaflet实现加载Stamen显示地图
  8. C#中实现视频播放器窗体程序(附源码下载)
  9. SSM+BJUI实现CRUD的报表功能
  10. Java 网络 socket 编程