关于dijit.form.Select中addOption()的一点注意事项
来源:互联网 发布:php array to json 编辑:程序博客网 时间:2024/05/16 05:32
dijit.form.Select的addOption()函数是一个很好的功能,方便我们用编程的方法动态添加<option>结点到Select中。
不过如果遇到下面这样的问题,希望不要重走本人的老路,花冤枉时间。(Dojo 1.7.3)
HTML代码
<table><tr><td><label for="cb1">Check Box 1:</label></td><td><select id="cb1"name="cb1" style="width: 100px"data-dojo-type="dijit.form.Select"></select></td></tr><tr><td><label for="cb2">Check Box 2:</label></td><td><select id="cb2"name="cb2" style="width: 100px"data-dojo-type="dijit.form.Select"></select></td></tr></table>
JS代码
require([ "dojo/ready", "dojo/_base/xhr", "dojo/json", "dijit/registry", "dojo/_base/array" ],function(ready, xhr, JSON, registry, array) {ready(function() {var cb1 = registry.byId("cb1");var cb2 = registry.byId("cb2");var options = [{value: "op1",label: "option 1"},{value: "op2",label: "option 2"}];array.forEach(options, function(option){cb1.addOption(option);cb2.addOption(option);});cb1.set("value", "op1");cb2.set("value", "op2");});});
从JS代码来看,cb1当前选中的是op1,cb2当前选中的是op2。但是如果用cb1.get(“value”)取得当前选中的值,得到的却是”op2”!
问题就出在同一个options变量被同时赋给了cb1和cb2,这样做似乎导致它们的option有了关联。
改成下面这种实现方法就可以避免这个问题了:
JS代码
require([ "dojo/ready", "dojo/_base/xhr", "dojo/json", "dijit/registry", "dojo/_base/array" ],function(ready, xhr, JSON, registry, array) {ready(function() {var cb1 = registry.byId("cb1");var cb2 = registry.byId("cb2");var options1 = [{value: "op1",label: "option 1"},{value: "op2",label: "option 2"}];var options2 = [{value: "op1",label: "option 1"},{value: "op2",label: "option 2"}];array.forEach(options1, function(option){cb1.addOption(option);});array.forEach(options2, function(option){cb2.addOption(option);});cb1.set("value", "op1");cb2.set("value", "op2");});});
有兴趣的可以追溯一下dijit.form.Select的源码。
- 关于dijit.form.Select中addOption()的一点注意事项
- dijit.form.Select、dijit.form.ComboBox和dijit.form.FilteringSelect三者的区别
- 怪异的dijit.form.Select(一)
- 关于dijit.form.Select 动态添加等基本操作
- dijit.form.Select菜单项的数据通过rest加载
- 关于Android中selector的一点注意事项
- 关于dijit.form.MultiSelect的一些基本操作
- 关于split的一点注意事项
- 关于imcrop的一点注意事项
- 关于leetcode的一点注意事项
- 关于Java开发中使用Oracle数据库的一点注意事项
- dojo-dijit.form.Button的使用
- dijit.form.TextBox的一些用法
- dijit/form/FilteringSelect 的使用记录
- Dojo关于dijit/form/CheckBox序列化的疑问?请大侠指教
- dojo dijit layout的一点问题
- 关于MFC消息响应的一点注意事项
- 关于swiper分页的一点注意事项
- 强制的类型转换
- 修复数据库脚本
- linux内核返回错误参数
- "main" org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file
- C++中的临时对象(拷贝构造函数)(上)
- 关于dijit.form.Select中addOption()的一点注意事项
- 植物大战僵尸辅助之重叠植物
- Mozilla 免费送火狐手机 刺激开发者兴趣
- 47 个树莓派项目或许能激发你的灵感
- 小组实验任务答案公布:oracle实施前准备清单
- Twitter 工程师眼中的新浪微博
- 自己面试中遇到的for循环问题
- 程序中输出的各种日志信息类并写入日志文件
- 读书笔记-Google时代的工作方法(6)